diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 434c5e9..163e94f 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -330,11 +330,6 @@
 	select SYS_ARM_MPU
 	select SYS_CACHE_SHIFT_6
 
-config CPU_SA1100
-	bool
-	select SYS_CACHE_SHIFT_5
-	imply SYS_ARM_MMU
-
 config SYS_CPU
 	default "arm720t" if CPU_ARM720T
 	default "arm920t" if CPU_ARM920T
@@ -345,7 +340,6 @@
 	default "armv7" if CPU_V7A
 	default "armv7" if CPU_V7R
 	default "armv7m" if CPU_V7M
-	default "sa1100" if CPU_SA1100
 	default "armv8" if ARM64
 
 config SYS_ARM_ARCH
@@ -359,7 +353,6 @@
 	default 7 if CPU_V7A
 	default 7 if CPU_V7M
 	default 7 if CPU_V7R
-	default 4 if CPU_SA1100
 	default 8 if ARM64
 
 choice
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 09fc318..a376030 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -10,7 +10,6 @@
 arch-$(CONFIG_CPU_ARM920T)	=-march=armv4t
 arch-$(CONFIG_CPU_ARM926EJS)	=-march=armv5te
 arch-$(CONFIG_CPU_ARM946ES)	=-march=armv5te
-arch-$(CONFIG_CPU_SA1100)	=-march=armv4
 arch-$(CONFIG_CPU_ARM1136)	=-march=armv5t
 arch-$(CONFIG_CPU_ARM1176)	=-march=armv5t
 arch-$(CONFIG_CPU_V7A)		=$(call cc-option, -march=armv7-a, \
@@ -39,7 +38,6 @@
 tune-$(CONFIG_CPU_ARM920T)	=
 tune-$(CONFIG_CPU_ARM926EJS)	=
 tune-$(CONFIG_CPU_ARM946ES)	=
-tune-$(CONFIG_CPU_SA1100)	=-mtune=strongarm1100
 tune-$(CONFIG_CPU_ARM1136)	=
 tune-$(CONFIG_CPU_ARM1176)	=
 tune-$(CONFIG_CPU_V7A)		=-mtune=generic-armv7-a
diff --git a/arch/arm/cpu/sa1100/Makefile b/arch/arm/cpu/sa1100/Makefile
deleted file mode 100644
index 3819309..0000000
--- a/arch/arm/cpu/sa1100/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0+
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-
-extra-y	= start.o
-
-obj-y	+= cpu.o
-obj-y	+= timer.o
diff --git a/arch/arm/cpu/sa1100/cpu.c b/arch/arm/cpu/sa1100/cpu.c
deleted file mode 100644
index 6f67f7f..0000000
--- a/arch/arm/cpu/sa1100/cpu.c
+++ /dev/null
@@ -1,65 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@sysgo.de>
- */
-
-/*
- * CPU specific code
- */
-
-#include <common.h>
-#include <command.h>
-#include <cpu_func.h>
-#include <irq_func.h>
-#include <asm/system.h>
-#include <asm/io.h>
-
-static void cache_flush(void);
-
-int cleanup_before_linux (void)
-{
-	/*
-	 * this function is called just before we call linux
-	 * it prepares the processor for linux
-	 *
-	 * just disable everything that can disturb booting linux
-	 */
-
-	disable_interrupts();
-
-	/* turn off I-cache */
-	icache_disable();
-	dcache_disable();
-
-	/* flush I-cache */
-	cache_flush();
-
-	return (0);
-}
-
-/* flush I/D-cache */
-static void cache_flush (void)
-{
-	unsigned long i = 0;
-
-	asm ("mcr p15, 0, %0, c7, c5, 0": :"r" (i));
-}
-
-#define RST_BASE 0x90030000
-#define RSRR	0x00
-#define RCSR	0x04
-
-__attribute__((noreturn)) void reset_cpu(void)
-{
-	/* repeat endlessly */
-	while (1) {
-		writel(0, RST_BASE + RCSR);
-		writel(1, RST_BASE + RSRR);
-	}
-}
diff --git a/arch/arm/cpu/sa1100/start.S b/arch/arm/cpu/sa1100/start.S
deleted file mode 100644
index 2f84f20..0000000
--- a/arch/arm/cpu/sa1100/start.S
+++ /dev/null
@@ -1,126 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- *  armboot - Startup Code for SA1100 CPU
- *
- *  Copyright (C) 1998	Dan Malek <dmalek@jlc.net>
- *  Copyright (C) 1999	Magnus Damm <kieraypc01.p.y.kie.era.ericsson.se>
- *  Copyright (C) 2000	Wolfgang Denk <wd@denx.de>
- *  Copyright (c) 2001	Alex Züpke <azu@sysgo.de>
- */
-
-#include <asm-offsets.h>
-#include <config.h>
-
-/*
- *************************************************************************
- *
- * Startup Code (reset vector)
- *
- * do important init only if we don't start from memory!
- * relocate armboot to ram
- * setup stack
- * jump to second stage
- *
- *************************************************************************
- */
-
-	.globl	reset
-
-reset:
-	/*
-	 * set the cpu to SVC32 mode
-	 */
-	mrs	r0,cpsr
-	bic	r0,r0,#0x1f
-	orr	r0,r0,#0xd3
-	msr	cpsr,r0
-
-	/*
-	 * we do sys-critical inits only at reboot,
-	 * not when booting from ram!
-	 */
-#if !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT)
-	bl	cpu_init_crit
-#endif
-
-	bl	_main
-
-/*------------------------------------------------------------------------------*/
-
-	.globl	c_runtime_cpu_setup
-c_runtime_cpu_setup:
-
-	mov	pc, lr
-
-/*
- *************************************************************************
- *
- * CPU_init_critical registers
- *
- * setup important registers
- * setup memory timing
- *
- *************************************************************************
- */
-
-
-/* Interrupt-Controller base address */
-IC_BASE:	.word	0x90050000
-#define ICMR	0x04
-
-
-/* Reset-Controller */
-RST_BASE:		.word   0x90030000
-#define RSRR	0x00
-#define RCSR	0x04
-
-
-/* PWR */
-PWR_BASE:		.word   0x90020000
-#define PSPR    0x08
-#define PPCR    0x14
-cpuspeed:		.word   CONFIG_SYS_CPUSPEED
-
-
-cpu_init_crit:
-	/*
-	 * mask all IRQs
-	 */
-	ldr	r0, IC_BASE
-	mov	r1, #0x00
-	str	r1, [r0, #ICMR]
-
-	/* set clock speed */
-	ldr	r0, PWR_BASE
-	ldr	r1, cpuspeed
-	str	r1, [r0, #PPCR]
-
-#if !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT_ONLY)
-	/*
-	 * before relocating, we have to setup RAM timing
-	 * because memory timing is board-dependend, you will
-	 * find a lowlevel_init.S in your board directory.
-	 */
-	mov	ip,	lr
-	bl	lowlevel_init
-	mov	lr,	ip
-#endif
-
-	/*
-	 * disable MMU stuff and enable I-cache
-	 */
-	mrc	p15,0,r0,c1,c0
-	bic	r0, r0, #0x00002000	@ clear bit 13 (X)
-	bic	r0, r0, #0x0000000f	@ clear bits 3-0 (WCAM)
-	orr	r0, r0, #0x00001000	@ set bit 12 (I) Icache
-	orr	r0, r0, #0x00000002	@ set bit 1 (A) Align
-	mcr	p15,0,r0,c1,c0
-
-	/*
-	 * flush v4 I/D caches
-	 */
-	mov	r0, #0
-	mcr	p15, 0, r0, c7, c7, 0	/* flush v3/v4 cache */
-	mcr	p15, 0, r0, c8, c7, 0	/* flush v4 TLB */
-
-	mov	pc, lr
diff --git a/arch/arm/cpu/sa1100/timer.c b/arch/arm/cpu/sa1100/timer.c
deleted file mode 100644
index a5cdaf5..0000000
--- a/arch/arm/cpu/sa1100/timer.c
+++ /dev/null
@@ -1,66 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Alex Zuepke <azu@sysgo.de>
- */
-
-#include <common.h>
-#include <SA-1100.h>
-#include <time.h>
-#include <linux/delay.h>
-
-static ulong get_timer_masked (void)
-{
-	return OSCR;
-}
-
-ulong get_timer (ulong base)
-{
-	return get_timer_masked ();
-}
-
-void __udelay(unsigned long usec)
-{
-	ulong tmo;
-	ulong endtime;
-	signed long diff;
-
-	if (usec >= 1000) {
-		tmo = usec / 1000;
-		tmo *= CONFIG_SYS_HZ;
-		tmo /= 1000;
-	} else {
-		tmo = usec * CONFIG_SYS_HZ;
-		tmo /= (1000*1000);
-	}
-
-	endtime = get_timer_masked () + tmo;
-
-	do {
-		ulong now = get_timer_masked ();
-		diff = endtime - now;
-	} while (diff >= 0);
-}
-
-/*
- * This function is derived from PowerPC code (read timebase as long long).
- * On ARM it just returns the timer value.
- */
-unsigned long long get_ticks(void)
-{
-	return get_timer(0);
-}
-
-/*
- * This function is derived from PowerPC code (timebase clock frequency).
- * On ARM it returns the number of timer ticks per second.
- */
-ulong get_tbclk(void)
-{
-	return CONFIG_SYS_HZ;
-}
diff --git a/arch/arm/include/asm/arch-sa1100/bitfield.h b/arch/arm/include/asm/arch-sa1100/bitfield.h
deleted file mode 100644
index 104a21c..0000000
--- a/arch/arm/include/asm/arch-sa1100/bitfield.h
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- *	FILE		bitfield.h
- *
- *	Version		1.1
- *	Author		Copyright (c) Marc A. Viredaz, 1998
- *			DEC Western Research Laboratory, Palo Alto, CA
- *	Date		April 1998 (April 1997)
- *	System		Advanced RISC Machine (ARM)
- *	Language	C or ARM Assembly
- *	Purpose		Definition of macros to operate on bit fields.
- */
-
-
-#ifndef __BITFIELD_H
-#define __BITFIELD_H
-
-#ifndef __ASSEMBLY__
-#define UData(Data)	((unsigned long) (Data))
-#else
-#define UData(Data)	(Data)
-#endif
-
-
-/*
- * MACRO: Fld
- *
- * Purpose
- *    The macro "Fld" encodes a bit field, given its size and its shift value
- *    with respect to bit 0.
- *
- * Note
- *    A more intuitive way to encode bit fields would have been to use their
- *    mask. However, extracting size and shift value information from a bit
- *    field's mask is cumbersome and might break the assembler (255-character
- *    line-size limit).
- *
- * Input
- *    Size		Size of the bit field, in number of bits.
- *    Shft		Shift value of the bit field with respect to bit 0.
- *
- * Output
- *    Fld		Encoded bit field.
- */
-
-#define Fld(Size, Shft)	(((Size) << 16) + (Shft))
-
-
-/*
- * MACROS: FSize, FShft, FMsk, FAlnMsk, F1stBit
- *
- * Purpose
- *    The macros "FSize", "FShft", "FMsk", "FAlnMsk", and "F1stBit" return
- *    the size, shift value, mask, aligned mask, and first bit of a
- *    bit field.
- *
- * Input
- *    Field		Encoded bit field (using the macro "Fld").
- *
- * Output
- *    FSize		Size of the bit field, in number of bits.
- *    FShft		Shift value of the bit field with respect to bit 0.
- *    FMsk		Mask for the bit field.
- *    FAlnMsk		Mask for the bit field, aligned on bit 0.
- *    F1stBit		First bit of the bit field.
- */
-
-#define FSize(Field)	((Field) >> 16)
-#define FShft(Field)	((Field) & 0x0000FFFF)
-#define FMsk(Field)	(((UData (1) << FSize (Field)) - 1) << FShft (Field))
-#define FAlnMsk(Field)	((UData (1) << FSize (Field)) - 1)
-#define F1stBit(Field)	(UData (1) << FShft (Field))
-
-
-/*
- * MACRO: FInsrt
- *
- * Purpose
- *    The macro "FInsrt" inserts a value into a bit field by shifting the
- *    former appropriately.
- *
- * Input
- *    Value		Bit-field value.
- *    Field		Encoded bit field (using the macro "Fld").
- *
- * Output
- *    FInsrt		Bit-field value positioned appropriately.
- */
-
-#define FInsrt(Value, Field) \
-			(UData (Value) << FShft (Field))
-
-
-/*
- * MACRO: FExtr
- *
- * Purpose
- *    The macro "FExtr" extracts the value of a bit field by masking and
- *    shifting it appropriately.
- *
- * Input
- *    Data		Data containing the bit-field to be extracted.
- *    Field		Encoded bit field (using the macro "Fld").
- *
- * Output
- *    FExtr		Bit-field value.
- */
-
-#define FExtr(Data, Field) \
-			((UData (Data) >> FShft (Field)) & FAlnMsk (Field))
-
-
-#endif /* __BITFIELD_H */
diff --git a/arch/arm/include/asm/proc-armv/system.h b/arch/arm/include/asm/proc-armv/system.h
index c61374e..a1f59d9 100644
--- a/arch/arm/include/asm/proc-armv/system.h
+++ b/arch/arm/include/asm/proc-armv/system.h
@@ -163,8 +163,7 @@
 
 #endif	/* CONFIG_ARM64 */
 
-#if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110) || \
-	defined(CONFIG_ARM64)
+#if defined(CONFIG_ARM64)
 /*
  * On the StrongARM, "swp" is terminally broken since it bypasses the
  * cache totally.  This means that the cache becomes inconsistent, and,
diff --git a/arch/arm/mach-keystone/ddr3_spd.c b/arch/arm/mach-keystone/ddr3_spd.c
index c4a1908..6f7f8ab 100644
--- a/arch/arm/mach-keystone/ddr3_spd.c
+++ b/arch/arm/mach-keystone/ddr3_spd.c
@@ -404,24 +404,11 @@
 static int ddr3_read_spd(ddr3_spd_eeprom_t *spd_params)
 {
 	int ret;
-#if !CONFIG_IS_ENABLED(DM_I2C)
-	int old_bus;
-
-	i2c_init(CONFIG_SYS_DAVINCI_I2C_SPEED, CONFIG_SYS_DAVINCI_I2C_SLAVE);
-
-	old_bus = i2c_get_bus_num();
-	i2c_set_bus_num(1);
-
-	ret = i2c_read(0x53, 0, 1, (unsigned char *)spd_params, 256);
-
-	i2c_set_bus_num(old_bus);
-#else
 	struct udevice *dev;
 
 	ret = i2c_get_chip_for_busnum(1, 0x53, 1, &dev);
 	if (!ret)
 		ret = dm_i2c_read(dev, 0, (unsigned char *)spd_params, 256);
-#endif
 	if (ret) {
 		printf("Cannot read DIMM params\n");
 		return 1;
diff --git a/arch/arm/mach-omap2/omap3/emif4.c b/arch/arm/mach-omap2/omap3/emif4.c
index d7d7798..491e7c2 100644
--- a/arch/arm/mach-omap2/omap3/emif4.c
+++ b/arch/arm/mach-omap2/omap3/emif4.c
@@ -41,7 +41,7 @@
 
 	/* TODO: Calculate the size based on EMIF4 configuration */
 	if (cs == CS0)
-		size = CONFIG_SYS_CS0_SIZE;
+		size = 256 * 1024 * 1024;
 
 	return size;
 }
diff --git a/arch/powerpc/cpu/mpc85xx/Kconfig b/arch/powerpc/cpu/mpc85xx/Kconfig
index 915e28e..b6881bf 100644
--- a/arch/powerpc/cpu/mpc85xx/Kconfig
+++ b/arch/powerpc/cpu/mpc85xx/Kconfig
@@ -1230,6 +1230,9 @@
 config SYS_FSL_CPC
 	bool "Corenet Platform Cache support"
 
+config SYS_CACHE_STASHING
+	bool "Enable cache stashing"
+
 config SYS_MPC85XX_NO_RESETVEC
 	bool "Discard resetvec section and move bootpg section up"
 	depends on MPC85xx
diff --git a/board/freescale/corenet_ds/p4080ds_ddr.c b/board/freescale/corenet_ds/p4080ds_ddr.c
index 3469064..9839eac 100644
--- a/board/freescale/corenet_ds/p4080ds_ddr.c
+++ b/board/freescale/corenet_ds/p4080ds_ddr.c
@@ -62,7 +62,6 @@
 #define CONFIG_SYS_DDR_INIT_ADDR	0x00000000
 #define CONFIG_SYS_DDR_INIT_EXT_ADDR	0x00000000
 #define CONFIG_SYS_DDR_CS1_CONFIG	0x80004202
-#define CONFIG_SYS_DDR_DATA_INIT	0xdeadbeef
 #define CONFIG_SYS_DDR_TIMING_4		0x00000001
 #define CONFIG_SYS_DDR_TIMING_5		0x02401400
 #define CONFIG_SYS_DDR_MODE_CONTROL	0x00000000
diff --git a/board/freescale/p1_p2_rdb_pc/ddr.c b/board/freescale/p1_p2_rdb_pc/ddr.c
index be803dd..038e673 100644
--- a/board/freescale/p1_p2_rdb_pc/ddr.c
+++ b/board/freescale/p1_p2_rdb_pc/ddr.c
@@ -227,7 +227,7 @@
 		.ddr_sdram_mode_2 = CONFIG_SYS_DDR_MODE_2,
 		.ddr_sdram_md_cntl = CONFIG_SYS_DDR_MODE_CONTROL,
 		.ddr_sdram_interval = CONFIG_SYS_DDR_INTERVAL,
-		.ddr_data_init = CONFIG_SYS_DDR_DATA_INIT,
+		.ddr_data_init = 0xdeadbeef, /* Poison value */
 		.ddr_sdram_clk_cntl = CONFIG_SYS_DDR_CLK_CTRL,
 		.ddr_init_addr = CONFIG_SYS_DDR_INIT_ADDR,
 		.ddr_init_ext_addr = CONFIG_SYS_DDR_INIT_EXT_ADDR,
diff --git a/board/lego/ev3/legoev3.c b/board/lego/ev3/legoev3.c
index 980ffef..8349260 100644
--- a/board/lego/ev3/legoev3.c
+++ b/board/lego/ev3/legoev3.c
@@ -27,6 +27,7 @@
 #include <hwconfig.h>
 #include <asm/mach-types.h>
 #include <asm/setup.h>
+#include <dm/uclass.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -57,6 +58,8 @@
  */
 static void setup_serial_number(void)
 {
+	struct udevice *idev, *ibus;
+	int ret;
 	u32 offset;
 	char serial_number[13];
 	u8 buf[6];
@@ -65,7 +68,15 @@
 	if (env_get("serial#"))
 		return;
 
-	if (i2c_read(EEPROM_I2C_ADDR, EEPROM_REV_OFFSET, 2, buf, 2)) {
+	ret = uclass_get_device_by_seq(UCLASS_I2C, 0, &ibus);
+	if (ret)
+		return;
+
+	ret = dm_i2c_probe(ibus, EEPROM_I2C_ADDR, 0, &idev);
+	if (ret)
+		return;
+
+	if (dm_i2c_read(idev, EEPROM_REV_OFFSET, buf, 2)) {
 		printf("\nEEPROM revision read failed!\n");
 		return;
 	}
@@ -83,7 +94,7 @@
 	/* EEPROM rev 3 has Bluetooth address where rev should be */
 	offset = (eeprom_rev == 3) ? EEPROM_REV_OFFSET : EEPROM_BDADDR_OFFSET;
 
-	if (i2c_read(EEPROM_I2C_ADDR, offset, 2, buf, 6)) {
+	if (dm_i2c_read(idev, offset, buf, 6)) {
 		printf("\nEEPROM serial read failed!\n");
 		return;
 	}
diff --git a/configs/P2041RDB_NAND_defconfig b/configs/P2041RDB_NAND_defconfig
index 4c453a7..30bf78b 100644
--- a/configs/P2041RDB_NAND_defconfig
+++ b/configs/P2041RDB_NAND_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P2041RDB_SDCARD_defconfig b/configs/P2041RDB_SDCARD_defconfig
index b5f920b..d5ad609 100644
--- a/configs/P2041RDB_SDCARD_defconfig
+++ b/configs/P2041RDB_SDCARD_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P2041RDB_SPIFLASH_defconfig b/configs/P2041RDB_SPIFLASH_defconfig
index ecf63e5..97b01b4 100644
--- a/configs/P2041RDB_SPIFLASH_defconfig
+++ b/configs/P2041RDB_SPIFLASH_defconfig
@@ -11,6 +11,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P2041RDB_defconfig b/configs/P2041RDB_defconfig
index e609dfc..c1eb080 100644
--- a/configs/P2041RDB_defconfig
+++ b/configs/P2041RDB_defconfig
@@ -11,6 +11,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P3041DS_NAND_defconfig b/configs/P3041DS_NAND_defconfig
index 59fdc33..1df522a 100644
--- a/configs/P3041DS_NAND_defconfig
+++ b/configs/P3041DS_NAND_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P3041DS_SDCARD_defconfig b/configs/P3041DS_SDCARD_defconfig
index 17aa980..2380cfc 100644
--- a/configs/P3041DS_SDCARD_defconfig
+++ b/configs/P3041DS_SDCARD_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P3041DS_SPIFLASH_defconfig b/configs/P3041DS_SPIFLASH_defconfig
index 2be600a..8a2464d 100644
--- a/configs/P3041DS_SPIFLASH_defconfig
+++ b/configs/P3041DS_SPIFLASH_defconfig
@@ -11,6 +11,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P3041DS_defconfig b/configs/P3041DS_defconfig
index f227195..0abf6e1 100644
--- a/configs/P3041DS_defconfig
+++ b/configs/P3041DS_defconfig
@@ -11,6 +11,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P4080DS_SDCARD_defconfig b/configs/P4080DS_SDCARD_defconfig
index 2aba222..66769e0 100644
--- a/configs/P4080DS_SDCARD_defconfig
+++ b/configs/P4080DS_SDCARD_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P4080DS_SPIFLASH_defconfig b/configs/P4080DS_SPIFLASH_defconfig
index 9bfb0a8..8b5b814 100644
--- a/configs/P4080DS_SPIFLASH_defconfig
+++ b/configs/P4080DS_SPIFLASH_defconfig
@@ -11,6 +11,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P4080DS_defconfig b/configs/P4080DS_defconfig
index 1d5f00d..a0b12d0 100644
--- a/configs/P4080DS_defconfig
+++ b/configs/P4080DS_defconfig
@@ -11,6 +11,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P5040DS_NAND_defconfig b/configs/P5040DS_NAND_defconfig
index 741adc5..f48b0f9 100644
--- a/configs/P5040DS_NAND_defconfig
+++ b/configs/P5040DS_NAND_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P5040DS_SDCARD_defconfig b/configs/P5040DS_SDCARD_defconfig
index c10c948..bf72874 100644
--- a/configs/P5040DS_SDCARD_defconfig
+++ b/configs/P5040DS_SDCARD_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P5040DS_SPIFLASH_defconfig b/configs/P5040DS_SPIFLASH_defconfig
index 111ca1d..c3a5f63 100644
--- a/configs/P5040DS_SPIFLASH_defconfig
+++ b/configs/P5040DS_SPIFLASH_defconfig
@@ -11,6 +11,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/P5040DS_defconfig b/configs/P5040DS_defconfig
index fd94afa..9dac9e9 100644
--- a/configs/P5040DS_defconfig
+++ b/configs/P5040DS_defconfig
@@ -11,6 +11,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/T1024RDB_NAND_defconfig b/configs/T1024RDB_NAND_defconfig
index d44f062..de2b09c 100644
--- a/configs/T1024RDB_NAND_defconfig
+++ b/configs/T1024RDB_NAND_defconfig
@@ -15,6 +15,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_SPL_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
diff --git a/configs/T1024RDB_SDCARD_defconfig b/configs/T1024RDB_SDCARD_defconfig
index fdff32c..3a3cff8 100644
--- a/configs/T1024RDB_SDCARD_defconfig
+++ b/configs/T1024RDB_SDCARD_defconfig
@@ -16,6 +16,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T1024RDB_SPIFLASH_defconfig b/configs/T1024RDB_SPIFLASH_defconfig
index fdfbdd2..9499f58 100644
--- a/configs/T1024RDB_SPIFLASH_defconfig
+++ b/configs/T1024RDB_SPIFLASH_defconfig
@@ -18,6 +18,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T1024RDB_defconfig b/configs/T1024RDB_defconfig
index 9f1599f..da28ef1 100644
--- a/configs/T1024RDB_defconfig
+++ b/configs/T1024RDB_defconfig
@@ -11,6 +11,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/T1042D4RDB_NAND_defconfig b/configs/T1042D4RDB_NAND_defconfig
index aca69b3..e51e363 100644
--- a/configs/T1042D4RDB_NAND_defconfig
+++ b/configs/T1042D4RDB_NAND_defconfig
@@ -14,6 +14,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_SPL_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
diff --git a/configs/T1042D4RDB_SDCARD_defconfig b/configs/T1042D4RDB_SDCARD_defconfig
index fcf530d..e86f0fa 100644
--- a/configs/T1042D4RDB_SDCARD_defconfig
+++ b/configs/T1042D4RDB_SDCARD_defconfig
@@ -15,6 +15,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T1042D4RDB_SPIFLASH_defconfig b/configs/T1042D4RDB_SPIFLASH_defconfig
index 3e0239e..c8d8857 100644
--- a/configs/T1042D4RDB_SPIFLASH_defconfig
+++ b/configs/T1042D4RDB_SPIFLASH_defconfig
@@ -17,6 +17,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T1042D4RDB_defconfig b/configs/T1042D4RDB_defconfig
index 3063157..1f3d6f6 100644
--- a/configs/T1042D4RDB_defconfig
+++ b/configs/T1042D4RDB_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/T2080QDS_NAND_defconfig b/configs/T2080QDS_NAND_defconfig
index 0a83ed1..f947561 100644
--- a/configs/T2080QDS_NAND_defconfig
+++ b/configs/T2080QDS_NAND_defconfig
@@ -14,6 +14,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_SPL_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
diff --git a/configs/T2080QDS_SDCARD_defconfig b/configs/T2080QDS_SDCARD_defconfig
index 2f12b4e..d83d365 100644
--- a/configs/T2080QDS_SDCARD_defconfig
+++ b/configs/T2080QDS_SDCARD_defconfig
@@ -15,6 +15,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T2080QDS_SECURE_BOOT_defconfig b/configs/T2080QDS_SECURE_BOOT_defconfig
index 2fc4e16..a18ea56 100644
--- a/configs/T2080QDS_SECURE_BOOT_defconfig
+++ b/configs/T2080QDS_SECURE_BOOT_defconfig
@@ -8,6 +8,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_NXP_ESBC=y
 CONFIG_BOOTSCRIPT_HDR_ADDR=0xee020000
 CONFIG_PCIE1=y
diff --git a/configs/T2080QDS_SPIFLASH_defconfig b/configs/T2080QDS_SPIFLASH_defconfig
index 7adf3af..160e697 100644
--- a/configs/T2080QDS_SPIFLASH_defconfig
+++ b/configs/T2080QDS_SPIFLASH_defconfig
@@ -17,6 +17,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
index 2228c64..16563ea 100644
--- a/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
+++ b/configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
@@ -9,6 +9,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SRIO_PCIE_BOOT_SLAVE=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T2080QDS_defconfig b/configs/T2080QDS_defconfig
index fbfbab8..e7775da 100644
--- a/configs/T2080QDS_defconfig
+++ b/configs/T2080QDS_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/T2080RDB_NAND_defconfig b/configs/T2080RDB_NAND_defconfig
index b84d653..472e577 100644
--- a/configs/T2080RDB_NAND_defconfig
+++ b/configs/T2080RDB_NAND_defconfig
@@ -14,6 +14,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_SPL_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
diff --git a/configs/T2080RDB_SDCARD_defconfig b/configs/T2080RDB_SDCARD_defconfig
index 21f76bd..6882baf 100644
--- a/configs/T2080RDB_SDCARD_defconfig
+++ b/configs/T2080RDB_SDCARD_defconfig
@@ -15,6 +15,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T2080RDB_SPIFLASH_defconfig b/configs/T2080RDB_SPIFLASH_defconfig
index bcc60b7..5b1824d 100644
--- a/configs/T2080RDB_SPIFLASH_defconfig
+++ b/configs/T2080RDB_SPIFLASH_defconfig
@@ -17,6 +17,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T2080RDB_defconfig b/configs/T2080RDB_defconfig
index 8df5b3d..6c6835e 100644
--- a/configs/T2080RDB_defconfig
+++ b/configs/T2080RDB_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/T2080RDB_revD_NAND_defconfig b/configs/T2080RDB_revD_NAND_defconfig
index a8e020a..a34c7ca 100644
--- a/configs/T2080RDB_revD_NAND_defconfig
+++ b/configs/T2080RDB_revD_NAND_defconfig
@@ -14,6 +14,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_SPL_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_T2080RDB_REV_D=y
diff --git a/configs/T2080RDB_revD_SDCARD_defconfig b/configs/T2080RDB_revD_SDCARD_defconfig
index 3baf69a..0f503a8 100644
--- a/configs/T2080RDB_revD_SDCARD_defconfig
+++ b/configs/T2080RDB_revD_SDCARD_defconfig
@@ -15,6 +15,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_T2080RDB_REV_D=y
 CONFIG_PCIE1=y
diff --git a/configs/T2080RDB_revD_SPIFLASH_defconfig b/configs/T2080RDB_revD_SPIFLASH_defconfig
index 9d8feac..d5845fe 100644
--- a/configs/T2080RDB_revD_SPIFLASH_defconfig
+++ b/configs/T2080RDB_revD_SPIFLASH_defconfig
@@ -17,6 +17,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_T2080RDB_REV_D=y
 CONFIG_PCIE1=y
diff --git a/configs/T2080RDB_revD_defconfig b/configs/T2080RDB_revD_defconfig
index e4eaa75..e599c4e6 100644
--- a/configs/T2080RDB_revD_defconfig
+++ b/configs/T2080RDB_revD_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_T2080RDB_REV_D=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T4240RDB_SDCARD_defconfig b/configs/T4240RDB_SDCARD_defconfig
index a2062b4..bd467ac 100644
--- a/configs/T4240RDB_SDCARD_defconfig
+++ b/configs/T4240RDB_SDCARD_defconfig
@@ -15,6 +15,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_SYS_MPC85XX_NO_RESETVEC=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
diff --git a/configs/T4240RDB_defconfig b/configs/T4240RDB_defconfig
index c321647..5b7849e 100644
--- a/configs/T4240RDB_defconfig
+++ b/configs/T4240RDB_defconfig
@@ -10,6 +10,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 CONFIG_PCIE1=y
 CONFIG_PCIE2=y
 CONFIG_PCIE3=y
diff --git a/configs/kmcent2_defconfig b/configs/kmcent2_defconfig
index ee900f5..a0c9244 100644
--- a/configs/kmcent2_defconfig
+++ b/configs/kmcent2_defconfig
@@ -13,6 +13,7 @@
 CONFIG_ENABLE_36BIT_PHYS=y
 CONFIG_SYS_BOOK3E_HV=y
 CONFIG_SYS_FSL_CPC=y
+CONFIG_SYS_CACHE_STASHING=y
 # CONFIG_DEEP_SLEEP is not set
 CONFIG_PCIE1=y
 CONFIG_KM_DEF_NETDEV="eth2"
diff --git a/configs/legoev3_defconfig b/configs/legoev3_defconfig
index 3612afb..36e3d70 100644
--- a/configs/legoev3_defconfig
+++ b/configs/legoev3_defconfig
@@ -46,7 +46,7 @@
 # CONFIG_NET is not set
 CONFIG_DM=y
 # CONFIG_DM_DEVICE_REMOVE is not set
-CONFIG_SYS_I2C_LEGACY=y
+CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
diff --git a/drivers/i2c/Kconfig b/drivers/i2c/Kconfig
index d25c573..72d06e4 100644
--- a/drivers/i2c/Kconfig
+++ b/drivers/i2c/Kconfig
@@ -687,9 +687,9 @@
 
 config SYS_I2C_BUS_MAX
 	int "Max I2C busses"
-	depends on ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_SOCFPGA
+	depends on ARCH_OMAP2PLUS || ARCH_SOCFPGA
 	default 2 if TI816X
-	default 3 if OMAP34XX || AM33XX || AM43XX || ARCH_KEYSTONE
+	default 3 if OMAP34XX || AM33XX || AM43XX
 	default 4 if ARCH_SOCFPGA || OMAP44XX || TI814X
 	default 5 if OMAP54XX
 	help
diff --git a/drivers/i2c/davinci_i2c.c b/drivers/i2c/davinci_i2c.c
index a4abd25..ae17722 100644
--- a/drivers/i2c/davinci_i2c.c
+++ b/drivers/i2c/davinci_i2c.c
@@ -21,14 +21,12 @@
 #include <linux/delay.h>
 #include "davinci_i2c.h"
 
-#if CONFIG_IS_ENABLED(DM_I2C)
 /* Information about i2c controller */
 struct i2c_bus {
 	int			id;
 	uint			speed;
 	struct i2c_regs		*regs;
 };
-#endif
 
 #define CHECK_NACK() \
 	do {\
@@ -340,99 +338,6 @@
 	return rc;
 }
 
-#if !CONFIG_IS_ENABLED(DM_I2C)
-static struct i2c_regs *davinci_get_base(struct i2c_adapter *adap)
-{
-	switch (adap->hwadapnr) {
-#if CONFIG_SYS_I2C_BUS_MAX >= 3
-	case 2:
-		return (struct i2c_regs *)I2C2_BASE;
-#endif
-#if CONFIG_SYS_I2C_BUS_MAX >= 2
-	case 1:
-		return (struct i2c_regs *)I2C1_BASE;
-#endif
-	case 0:
-		return (struct i2c_regs *)I2C_BASE;
-
-	default:
-		printf("wrong hwadapnr: %d\n", adap->hwadapnr);
-	}
-
-	return NULL;
-}
-
-static uint davinci_i2c_setspeed(struct i2c_adapter *adap, uint speed)
-{
-	struct i2c_regs *i2c_base = davinci_get_base(adap);
-	uint ret;
-
-	adap->speed = speed;
-	ret =  _davinci_i2c_setspeed(i2c_base, speed);
-
-	return ret;
-}
-
-static void davinci_i2c_init(struct i2c_adapter *adap, int speed,
-			     int slaveadd)
-{
-	struct i2c_regs *i2c_base = davinci_get_base(adap);
-
-	adap->speed = speed;
-	_davinci_i2c_init(i2c_base, speed, slaveadd);
-
-	return;
-}
-
-static int davinci_i2c_read(struct i2c_adapter *adap, uint8_t chip,
-			    uint32_t addr, int alen, uint8_t *buf, int len)
-{
-	struct i2c_regs *i2c_base = davinci_get_base(adap);
-	return _davinci_i2c_read(i2c_base, chip, addr, alen, buf, len);
-}
-
-static int davinci_i2c_write(struct i2c_adapter *adap, uint8_t chip,
-			     uint32_t addr, int alen, uint8_t *buf, int len)
-{
-	struct i2c_regs *i2c_base = davinci_get_base(adap);
-
-	return _davinci_i2c_write(i2c_base, chip, addr, alen, buf, len);
-}
-
-static int davinci_i2c_probe_chip(struct i2c_adapter *adap, uint8_t chip)
-{
-	struct i2c_regs *i2c_base = davinci_get_base(adap);
-
-	return _davinci_i2c_probe_chip(i2c_base, chip);
-}
-
-U_BOOT_I2C_ADAP_COMPLETE(davinci_0, davinci_i2c_init, davinci_i2c_probe_chip,
-			 davinci_i2c_read, davinci_i2c_write,
-			 davinci_i2c_setspeed,
-			 CONFIG_SYS_DAVINCI_I2C_SPEED,
-			 CONFIG_SYS_DAVINCI_I2C_SLAVE,
-			 0)
-
-#if CONFIG_SYS_I2C_BUS_MAX >= 2
-U_BOOT_I2C_ADAP_COMPLETE(davinci_1, davinci_i2c_init, davinci_i2c_probe_chip,
-			 davinci_i2c_read, davinci_i2c_write,
-			 davinci_i2c_setspeed,
-			 CONFIG_SYS_DAVINCI_I2C_SPEED1,
-			 CONFIG_SYS_DAVINCI_I2C_SLAVE1,
-			 1)
-#endif
-
-#if CONFIG_SYS_I2C_BUS_MAX >= 3
-U_BOOT_I2C_ADAP_COMPLETE(davinci_2, davinci_i2c_init, davinci_i2c_probe_chip,
-			 davinci_i2c_read, davinci_i2c_write,
-			 davinci_i2c_setspeed,
-			 CONFIG_SYS_DAVINCI_I2C_SPEED2,
-			 CONFIG_SYS_DAVINCI_I2C_SLAVE2,
-			 2)
-#endif
-
-#else /* CONFIG_DM_I2C */
-
 static int davinci_i2c_xfer(struct udevice *bus, struct i2c_msg *msg,
 			  int nmsgs)
 {
@@ -507,5 +412,3 @@
 	.priv_auto	= sizeof(struct i2c_bus),
 	.ops	= &davinci_i2c_ops,
 };
-
-#endif /* CONFIG_DM_I2C */
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index 72b4f7f..abb5332 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -1048,13 +1048,6 @@
 	int			result = 0;
 	struct usb_gadget	*gadget = dev->gadget;
 
-	if (gadget_is_sa1100(gadget)
-			&& dev->config
-			&& dev->tx_qlen != 0) {
-		/* tx fifo is full, but we can't clear it...*/
-		pr_err("can't change configurations");
-		return -ESPIPE;
-	}
 	eth_reset_config(dev);
 
 	switch (number) {
@@ -2019,14 +2012,6 @@
 		/* sh doesn't support multiple interfaces or configs */
 		cdc = 0;
 		rndis = 0;
-	} else if (gadget_is_sa1100(gadget)) {
-		/* hardware can't write zlps */
-		zlp = 0;
-		/*
-		 * sa1100 CAN do CDC, without status endpoint ... we use
-		 * non-CDC to be compatible with ARM Linux-2.4 "usb-eth".
-		 */
-		cdc = 0;
 	}
 
 	gcnum = usb_gadget_controller_number(gadget);
diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h
index 66ccd05..abc6dc7 100644
--- a/drivers/usb/gadget/gadget_chips.h
+++ b/drivers/usb/gadget/gadget_chips.h
@@ -45,13 +45,6 @@
 #define	gadget_is_sh(g)		0
 #endif
 
-/* not yet stable on 2.6 (would help "original Zaurus") */
-#ifdef CONFIG_USB_GADGET_SA1100
-#define	gadget_is_sa1100(g)	(!strcmp("sa1100_udc", (g)->name))
-#else
-#define	gadget_is_sa1100(g)	0
-#endif
-
 /* handhelds.org tree (?) */
 #ifdef CONFIG_USB_GADGET_MQ11XX
 #define	gadget_is_mq11xx(g)	(!strcmp("mq11xx_udc", (g)->name))
@@ -183,8 +176,6 @@
 		return 0x02;
 	else if (gadget_is_sh(gadget))
 		return 0x04;
-	else if (gadget_is_sa1100(gadget))
-		return 0x05;
 	else if (gadget_is_goku(gadget))
 		return 0x06;
 	else if (gadget_is_mq11xx(gadget))
diff --git a/include/SA-1100.h b/include/SA-1100.h
deleted file mode 100644
index 7589df2..0000000
--- a/include/SA-1100.h
+++ /dev/null
@@ -1,2833 +0,0 @@
-/*
- *	FILE		SA-1100.h
- *
- *	Version		1.2
- *	Author		Copyright (c) Marc A. Viredaz, 1998
- *			DEC Western Research Laboratory, Palo Alto, CA
- *	Date		January 1998 (April 1997)
- *	System		StrongARM SA-1100
- *	Language	C or ARM Assembly
- *	Purpose		Definition of constants related to the StrongARM
- *			SA-1100 microprocessor (Advanced RISC Machine (ARM)
- *			architecture version 4). This file is based on the
- *			StrongARM SA-1100 data sheet version 2.2.
- *
- *			Language-specific definitions are selected by the
- *			macro "LANGUAGE", which should be defined as either
- *			"C" (default) or "Assembly".
- */
-
-
-#ifndef LANGUAGE
-# ifdef __ASSEMBLY__
-#  define LANGUAGE Assembly
-# else
-#  define LANGUAGE C
-# endif
-#endif
-
-#ifndef io_p2v
-#define io_p2v(PhAdd)	(PhAdd)
-#endif
-
-#include <asm/arch-sa1100/bitfield.h>
-
-#define C		0
-#define Assembly	1
-
-
-#if LANGUAGE == C
-typedef unsigned short	Word16 ;
-typedef unsigned int	Word32 ;
-typedef Word32		Word ;
-typedef Word		Quad [4] ;
-typedef void		*Address ;
-typedef void		(*ExcpHndlr) (void) ;
-#endif /* LANGUAGE == C */
-
-
-/*
- * Memory
- */
-
-#define MemBnkSp	0x08000000	/* Memory Bank Space [byte]	   */
-
-#define StMemBnkSp	MemBnkSp	/* Static Memory Bank Space [byte] */
-#define StMemBnk0Sp	StMemBnkSp	/* Static Memory Bank 0 Space	   */
-					/* [byte]			   */
-#define StMemBnk1Sp	StMemBnkSp	/* Static Memory Bank 1 Space	   */
-					/* [byte]			   */
-#define StMemBnk2Sp	StMemBnkSp	/* Static Memory Bank 2 Space	   */
-					/* [byte]			   */
-#define StMemBnk3Sp	StMemBnkSp	/* Static Memory Bank 3 Space	   */
-					/* [byte]			   */
-
-#define DRAMBnkSp	MemBnkSp	/* DRAM Bank Space [byte]	   */
-#define DRAMBnk0Sp	DRAMBnkSp	/* DRAM Bank 0 Space [byte]	   */
-#define DRAMBnk1Sp	DRAMBnkSp	/* DRAM Bank 1 Space [byte]	   */
-#define DRAMBnk2Sp	DRAMBnkSp	/* DRAM Bank 2 Space [byte]	   */
-#define DRAMBnk3Sp	DRAMBnkSp	/* DRAM Bank 3 Space [byte]	   */
-
-#define ZeroMemSp	MemBnkSp	/* Zero Memory bank Space [byte]   */
-
-#define _StMemBnk(Nb)			/* Static Memory Bank [0..3]	   */ \
-			(0x00000000 + (Nb)*StMemBnkSp)
-#define _StMemBnk0	_StMemBnk (0)	/* Static Memory Bank 0		   */
-#define _StMemBnk1	_StMemBnk (1)	/* Static Memory Bank 1		   */
-#define _StMemBnk2	_StMemBnk (2)	/* Static Memory Bank 2		   */
-#define _StMemBnk3	_StMemBnk (3)	/* Static Memory Bank 3		   */
-
-#if LANGUAGE == C
-typedef Quad		StMemBnkType [StMemBnkSp/sizeof (Quad)] ;
-#define StMemBnk			/* Static Memory Bank [0..3]	   */ \
-			((StMemBnkType *) io_p2v (_StMemBnk (0)))
-#define StMemBnk0	(StMemBnk [0])	/* Static Memory Bank 0		   */
-#define StMemBnk1	(StMemBnk [1])	/* Static Memory Bank 1		   */
-#define StMemBnk2	(StMemBnk [2])	/* Static Memory Bank 2		   */
-#define StMemBnk3	(StMemBnk [3])	/* Static Memory Bank 3		   */
-#endif /* LANGUAGE == C */
-
-#define _DRAMBnk(Nb)			/* DRAM Bank [0..3]		   */ \
-			(0xC0000000 + (Nb)*DRAMBnkSp)
-#define _DRAMBnk0	_DRAMBnk (0)	/* DRAM Bank 0			   */
-#define _DRAMBnk1	_DRAMBnk (1)	/* DRAM Bank 1			   */
-#define _DRAMBnk2	_DRAMBnk (2)	/* DRAM Bank 2			   */
-#define _DRAMBnk3	_DRAMBnk (3)	/* DRAM Bank 3			   */
-
-#if LANGUAGE == C
-typedef Quad		DRAMBnkType [DRAMBnkSp/sizeof (Quad)] ;
-#define DRAMBnk				/* DRAM Bank [0..3]		   */ \
-			((DRAMBnkType *) io_p2v (_DRAMBnk (0)))
-#define DRAMBnk0	(DRAMBnk [0])	/* DRAM Bank 0			   */
-#define DRAMBnk1	(DRAMBnk [1])	/* DRAM Bank 1			   */
-#define DRAMBnk2	(DRAMBnk [2])	/* DRAM Bank 2			   */
-#define DRAMBnk3	(DRAMBnk [3])	/* DRAM Bank 3			   */
-#endif /* LANGUAGE == C */
-
-#define _ZeroMem	0xE0000000	/* Zero Memory bank		   */
-
-#if LANGUAGE == C
-typedef Quad		ZeroMemType [ZeroMemSp/sizeof (Quad)] ;
-#define ZeroMem				/* Zero Memory bank		   */ \
-			(*((ZeroMemType *) io_p2v (_ZeroMem)))
-#endif /* LANGUAGE == C */
-
-
-/*
- * Personal Computer Memory Card International Association (PCMCIA) sockets
- */
-
-#define PCMCIAPrtSp	0x04000000	/* PCMCIA Partition Space [byte]   */
-#define PCMCIASp	(4*PCMCIAPrtSp)	/* PCMCIA Space [byte]		   */
-#define PCMCIAIOSp	PCMCIAPrtSp	/* PCMCIA I/O Space [byte]	   */
-#define PCMCIAAttrSp	PCMCIAPrtSp	/* PCMCIA Attribute Space [byte]   */
-#define PCMCIAMemSp	PCMCIAPrtSp	/* PCMCIA Memory Space [byte]	   */
-
-#define PCMCIA0Sp	PCMCIASp	/* PCMCIA 0 Space [byte]	   */
-#define PCMCIA0IOSp	PCMCIAIOSp	/* PCMCIA 0 I/O Space [byte]	   */
-#define PCMCIA0AttrSp	PCMCIAAttrSp	/* PCMCIA 0 Attribute Space [byte] */
-#define PCMCIA0MemSp	PCMCIAMemSp	/* PCMCIA 0 Memory Space [byte]    */
-
-#define PCMCIA1Sp	PCMCIASp	/* PCMCIA 1 Space [byte]	   */
-#define PCMCIA1IOSp	PCMCIAIOSp	/* PCMCIA 1 I/O Space [byte]	   */
-#define PCMCIA1AttrSp	PCMCIAAttrSp	/* PCMCIA 1 Attribute Space [byte] */
-#define PCMCIA1MemSp	PCMCIAMemSp	/* PCMCIA 1 Memory Space [byte]    */
-
-#define _PCMCIA(Nb)			/* PCMCIA [0..1]		   */ \
-			(0x20000000 + (Nb)*PCMCIASp)
-#define _PCMCIAIO(Nb)	_PCMCIA (Nb)	/* PCMCIA I/O [0..1]		   */
-#define _PCMCIAAttr(Nb)			/* PCMCIA Attribute [0..1]	   */ \
-			(_PCMCIA (Nb) + 2*PCMCIAPrtSp)
-#define _PCMCIAMem(Nb)			/* PCMCIA Memory [0..1]		   */ \
-			(_PCMCIA (Nb) + 3*PCMCIAPrtSp)
-
-#define _PCMCIA0	_PCMCIA (0)	/* PCMCIA 0			   */
-#define _PCMCIA0IO	_PCMCIAIO (0)	/* PCMCIA 0 I/O			   */
-#define _PCMCIA0Attr	_PCMCIAAttr (0)	/* PCMCIA 0 Attribute		   */
-#define _PCMCIA0Mem	_PCMCIAMem (0)	/* PCMCIA 0 Memory		   */
-
-#define _PCMCIA1	_PCMCIA (1)	/* PCMCIA 1			   */
-#define _PCMCIA1IO	_PCMCIAIO (1)	/* PCMCIA 1 I/O			   */
-#define _PCMCIA1Attr	_PCMCIAAttr (1)	/* PCMCIA 1 Attribute		   */
-#define _PCMCIA1Mem	_PCMCIAMem (1)	/* PCMCIA 1 Memory		   */
-
-#if LANGUAGE == C
-
-typedef Quad		PCMCIAPrtType [PCMCIAPrtSp/sizeof (Quad)] ;
-typedef PCMCIAPrtType	PCMCIAType [PCMCIASp/PCMCIAPrtSp] ;
-
-#define PCMCIA0				/* PCMCIA 0			   */ \
-			(*((PCMCIAType *) io_p2v (_PCMCIA0)))
-#define PCMCIA0IO			/* PCMCIA 0 I/O			   */ \
-			(*((PCMCIAPrtType *) io_p2v (_PCMCIA0IO)))
-#define PCMCIA0Attr			/* PCMCIA 0 Attribute		   */ \
-			(*((PCMCIAPrtType *) io_p2v (_PCMCIA0Attr)))
-#define PCMCIA0Mem			/* PCMCIA 0 Memory		   */ \
-			(*((PCMCIAPrtType *) io_p2v (_PCMCIA0Mem)))
-
-#define PCMCIA1				/* PCMCIA 1			   */ \
-			(*((PCMCIAType *) io_p2v (_PCMCIA1)))
-#define PCMCIA1IO			/* PCMCIA 1 I/O			   */ \
-			(*((PCMCIAPrtType *) io_p2v (_PCMCIA1IO)))
-#define PCMCIA1Attr			/* PCMCIA 1 Attribute		   */ \
-			(*((PCMCIAPrtType *) io_p2v (_PCMCIA1Attr)))
-#define PCMCIA1Mem			/* PCMCIA 1 Memory		   */ \
-			(*((PCMCIAPrtType *) io_p2v (_PCMCIA1Mem)))
-
-#endif /* LANGUAGE == C */
-
-
-/*
- * Universal Serial Bus (USB) Device Controller (UDC) control registers
- *
- * Registers
- *    Ser0UDCCR		Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Control Register (read/write).
- *    Ser0UDCAR		Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Address Register (read/write).
- *    Ser0UDCOMP	Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Output Maximum Packet size register
- *			(read/write).
- *    Ser0UDCIMP	Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Input Maximum Packet size register
- *			(read/write).
- *    Ser0UDCCS0	Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Control/Status register end-point 0
- *			(read/write).
- *    Ser0UDCCS1	Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Control/Status register end-point 1
- *			(output, read/write).
- *    Ser0UDCCS2	Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Control/Status register end-point 2
- *			(input, read/write).
- *    Ser0UDCD0		Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Data register end-point 0
- *			(read/write).
- *    Ser0UDCWC		Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Write Count register end-point 0
- *			(read).
- *    Ser0UDCDR		Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Data Register (read/write).
- *    Ser0UDCSR		Serial port 0 Universal Serial Bus (USB) Device
- *			Controller (UDC) Status Register (read/write).
- */
-
-#define _Ser0UDCCR	0x80000000	/* Ser. port 0 UDC Control Reg.    */
-#define _Ser0UDCAR	0x80000004	/* Ser. port 0 UDC Address Reg.    */
-#define _Ser0UDCOMP	0x80000008	/* Ser. port 0 UDC Output Maximum  */
-					/* Packet size reg.		   */
-#define _Ser0UDCIMP	0x8000000C	/* Ser. port 0 UDC Input Maximum   */
-					/* Packet size reg.		   */
-#define _Ser0UDCCS0	0x80000010	/* Ser. port 0 UDC Control/Status  */
-					/* reg. end-point 0		   */
-#define _Ser0UDCCS1	0x80000014	/* Ser. port 0 UDC Control/Status  */
-					/* reg. end-point 1 (output)	   */
-#define _Ser0UDCCS2	0x80000018	/* Ser. port 0 UDC Control/Status  */
-					/* reg. end-point 2 (input)	   */
-#define _Ser0UDCD0	0x8000001C	/* Ser. port 0 UDC Data reg.	   */
-					/* end-point 0			   */
-#define _Ser0UDCWC	0x80000020	/* Ser. port 0 UDC Write Count	   */
-					/* reg. end-point 0		   */
-#define _Ser0UDCDR	0x80000028	/* Ser. port 0 UDC Data Reg.	   */
-#define _Ser0UDCSR	0x80000030	/* Ser. port 0 UDC Status Reg.	   */
-
-#if LANGUAGE == C
-#define Ser0UDCCR			/* Ser. port 0 UDC Control Reg.    */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCCR)))
-#define Ser0UDCAR			/* Ser. port 0 UDC Address Reg.    */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCAR)))
-#define Ser0UDCOMP			/* Ser. port 0 UDC Output Maximum  */ \
-					/* Packet size reg.		   */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCOMP)))
-#define Ser0UDCIMP			/* Ser. port 0 UDC Input Maximum   */ \
-					/* Packet size reg.		   */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCIMP)))
-#define Ser0UDCCS0			/* Ser. port 0 UDC Control/Status  */ \
-					/* reg. end-point 0		   */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCCS0)))
-#define Ser0UDCCS1			/* Ser. port 0 UDC Control/Status  */ \
-					/* reg. end-point 1 (output)	   */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCCS1)))
-#define Ser0UDCCS2			/* Ser. port 0 UDC Control/Status  */ \
-					/* reg. end-point 2 (input)	   */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCCS2)))
-#define Ser0UDCD0			/* Ser. port 0 UDC Data reg.	   */ \
-					/* end-point 0			   */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCD0)))
-#define Ser0UDCWC			/* Ser. port 0 UDC Write Count	   */ \
-					/* reg. end-point 0		   */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCWC)))
-#define Ser0UDCDR			/* Ser. port 0 UDC Data Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCDR)))
-#define Ser0UDCSR			/* Ser. port 0 UDC Status Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser0UDCSR)))
-#endif /* LANGUAGE == C */
-
-#define UDCCR_UDD	0x00000001	/* UDC Disable			   */
-#define UDCCR_UDA	0x00000002	/* UDC Active (read)		   */
-#define UDCCR_RESIM	0x00000004	/* Resume Interrupt Mask, per errata */
-#define UDCCR_EIM	0x00000008	/* End-point 0 Interrupt Mask	   */
-					/* (disable)			   */
-#define UDCCR_RIM	0x00000010	/* Receive Interrupt Mask	   */
-					/* (disable)			   */
-#define UDCCR_TIM	0x00000020	/* Transmit Interrupt Mask	   */
-					/* (disable)			   */
-#define UDCCR_SRM	0x00000040	/* Suspend/Resume interrupt Mask   */
-					/* (disable)			   */
-#define UDCCR_SUSIM	UDCCR_SRM	/* Per errata, SRM just masks suspend */
-#define UDCCR_REM	0x00000080	/* REset interrupt Mask (disable)  */
-
-#define UDCAR_ADD	Fld (7, 0)	/* function ADDress		   */
-
-#define UDCOMP_OUTMAXP	Fld (8, 0)	/* OUTput MAXimum Packet size - 1  */
-					/* [byte]			   */
-#define UDCOMP_OutMaxPkt(Size)		/* Output Maximum Packet size	   */ \
-					/* [1..256 byte]		   */ \
-			(((Size) - 1) << FShft (UDCOMP_OUTMAXP))
-
-#define UDCIMP_INMAXP	Fld (8, 0)	/* INput MAXimum Packet size - 1   */
-					/* [byte]			   */
-#define UDCIMP_InMaxPkt(Size)		/* Input Maximum Packet size	   */ \
-					/* [1..256 byte]		   */ \
-			(((Size) - 1) << FShft (UDCIMP_INMAXP))
-
-#define UDCCS0_OPR	0x00000001	/* Output Packet Ready (read)	   */
-#define UDCCS0_IPR	0x00000002	/* Input Packet Ready		   */
-#define UDCCS0_SST	0x00000004	/* Sent STall			   */
-#define UDCCS0_FST	0x00000008	/* Force STall			   */
-#define UDCCS0_DE	0x00000010	/* Data End			   */
-#define UDCCS0_SE	0x00000020	/* Setup End (read)		   */
-#define UDCCS0_SO	0x00000040	/* Serviced Output packet ready    */
-					/* (write)			   */
-#define UDCCS0_SSE	0x00000080	/* Serviced Setup End (write)	   */
-
-#define UDCCS1_RFS	0x00000001	/* Receive FIFO 12-bytes or more   */
-					/* Service request (read)	   */
-#define UDCCS1_RPC	0x00000002	/* Receive Packet Complete	   */
-#define UDCCS1_RPE	0x00000004	/* Receive Packet Error (read)	   */
-#define UDCCS1_SST	0x00000008	/* Sent STall			   */
-#define UDCCS1_FST	0x00000010	/* Force STall			   */
-#define UDCCS1_RNE	0x00000020	/* Receive FIFO Not Empty (read)   */
-
-#define UDCCS2_TFS	0x00000001	/* Transmit FIFO 8-bytes or less   */
-					/* Service request (read)	   */
-#define UDCCS2_TPC	0x00000002	/* Transmit Packet Complete	   */
-#define UDCCS2_TPE	0x00000004	/* Transmit Packet Error (read)    */
-#define UDCCS2_TUR	0x00000008	/* Transmit FIFO Under-Run	   */
-#define UDCCS2_SST	0x00000010	/* Sent STall			   */
-#define UDCCS2_FST	0x00000020	/* Force STall			   */
-
-#define UDCD0_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
-
-#define UDCWC_WC	Fld (4, 0)	/* Write Count			   */
-
-#define UDCDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
-
-#define UDCSR_EIR	0x00000001	/* End-point 0 Interrupt Request   */
-#define UDCSR_RIR	0x00000002	/* Receive Interrupt Request	   */
-#define UDCSR_TIR	0x00000004	/* Transmit Interrupt Request	   */
-#define UDCSR_SUSIR	0x00000008	/* SUSpend Interrupt Request	   */
-#define UDCSR_RESIR	0x00000010	/* RESume Interrupt Request	   */
-#define UDCSR_RSTIR	0x00000020	/* ReSeT Interrupt Request	   */
-
-
-/*
- * Universal Asynchronous Receiver/Transmitter (UART) control registers
- *
- * Registers
- *    Ser1UTCR0		Serial port 1 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 0
- *			(read/write).
- *    Ser1UTCR1		Serial port 1 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 1
- *			(read/write).
- *    Ser1UTCR2		Serial port 1 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 2
- *			(read/write).
- *    Ser1UTCR3		Serial port 1 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 3
- *			(read/write).
- *    Ser1UTDR		Serial port 1 Universal Asynchronous
- *			Receiver/Transmitter (UART) Data Register
- *			(read/write).
- *    Ser1UTSR0		Serial port 1 Universal Asynchronous
- *			Receiver/Transmitter (UART) Status Register 0
- *			(read/write).
- *    Ser1UTSR1		Serial port 1 Universal Asynchronous
- *			Receiver/Transmitter (UART) Status Register 1 (read).
- *
- *    Ser2UTCR0		Serial port 2 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 0
- *			(read/write).
- *    Ser2UTCR1		Serial port 2 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 1
- *			(read/write).
- *    Ser2UTCR2		Serial port 2 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 2
- *			(read/write).
- *    Ser2UTCR3		Serial port 2 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 3
- *			(read/write).
- *    Ser2UTCR4		Serial port 2 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 4
- *			(read/write).
- *    Ser2UTDR		Serial port 2 Universal Asynchronous
- *			Receiver/Transmitter (UART) Data Register
- *			(read/write).
- *    Ser2UTSR0		Serial port 2 Universal Asynchronous
- *			Receiver/Transmitter (UART) Status Register 0
- *			(read/write).
- *    Ser2UTSR1		Serial port 2 Universal Asynchronous
- *			Receiver/Transmitter (UART) Status Register 1 (read).
- *
- *    Ser3UTCR0		Serial port 3 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 0
- *			(read/write).
- *    Ser3UTCR1		Serial port 3 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 1
- *			(read/write).
- *    Ser3UTCR2		Serial port 3 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 2
- *			(read/write).
- *    Ser3UTCR3		Serial port 3 Universal Asynchronous
- *			Receiver/Transmitter (UART) Control Register 3
- *			(read/write).
- *    Ser3UTDR		Serial port 3 Universal Asynchronous
- *			Receiver/Transmitter (UART) Data Register
- *			(read/write).
- *    Ser3UTSR0		Serial port 3 Universal Asynchronous
- *			Receiver/Transmitter (UART) Status Register 0
- *			(read/write).
- *    Ser3UTSR1		Serial port 3 Universal Asynchronous
- *			Receiver/Transmitter (UART) Status Register 1 (read).
- *
- * Clocks
- *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
- *			or 3.5795 MHz).
- *    fua, Tua		Frequency, period of the UART communication.
- */
-
-#define _UTCR0(Nb)			/* UART Control Reg. 0 [1..3]	   */ \
-			(0x80010000 + ((Nb) - 1)*0x00020000)
-#define _UTCR1(Nb)			/* UART Control Reg. 1 [1..3]	   */ \
-			(0x80010004 + ((Nb) - 1)*0x00020000)
-#define _UTCR2(Nb)			/* UART Control Reg. 2 [1..3]	   */ \
-			(0x80010008 + ((Nb) - 1)*0x00020000)
-#define _UTCR3(Nb)			/* UART Control Reg. 3 [1..3]	   */ \
-			(0x8001000C + ((Nb) - 1)*0x00020000)
-#define _UTCR4(Nb)			/* UART Control Reg. 4 [2]	   */ \
-			(0x80010010 + ((Nb) - 1)*0x00020000)
-#define _UTDR(Nb)			/* UART Data Reg. [1..3]	   */ \
-			(0x80010014 + ((Nb) - 1)*0x00020000)
-#define _UTSR0(Nb)			/* UART Status Reg. 0 [1..3]	   */ \
-			(0x8001001C + ((Nb) - 1)*0x00020000)
-#define _UTSR1(Nb)			/* UART Status Reg. 1 [1..3]	   */ \
-			(0x80010020 + ((Nb) - 1)*0x00020000)
-
-#define _Ser1UTCR0	_UTCR0 (1)	/* Ser. port 1 UART Control Reg. 0 */
-#define _Ser1UTCR1	_UTCR1 (1)	/* Ser. port 1 UART Control Reg. 1 */
-#define _Ser1UTCR2	_UTCR2 (1)	/* Ser. port 1 UART Control Reg. 2 */
-#define _Ser1UTCR3	_UTCR3 (1)	/* Ser. port 1 UART Control Reg. 3 */
-#define _Ser1UTDR	_UTDR (1)	/* Ser. port 1 UART Data Reg.	   */
-#define _Ser1UTSR0	_UTSR0 (1)	/* Ser. port 1 UART Status Reg. 0  */
-#define _Ser1UTSR1	_UTSR1 (1)	/* Ser. port 1 UART Status Reg. 1  */
-
-#define _Ser2UTCR0	_UTCR0 (2)	/* Ser. port 2 UART Control Reg. 0 */
-#define _Ser2UTCR1	_UTCR1 (2)	/* Ser. port 2 UART Control Reg. 1 */
-#define _Ser2UTCR2	_UTCR2 (2)	/* Ser. port 2 UART Control Reg. 2 */
-#define _Ser2UTCR3	_UTCR3 (2)	/* Ser. port 2 UART Control Reg. 3 */
-#define _Ser2UTCR4	_UTCR4 (2)	/* Ser. port 2 UART Control Reg. 4 */
-#define _Ser2UTDR	_UTDR (2)	/* Ser. port 2 UART Data Reg.	   */
-#define _Ser2UTSR0	_UTSR0 (2)	/* Ser. port 2 UART Status Reg. 0  */
-#define _Ser2UTSR1	_UTSR1 (2)	/* Ser. port 2 UART Status Reg. 1  */
-
-#define _Ser3UTCR0	_UTCR0 (3)	/* Ser. port 3 UART Control Reg. 0 */
-#define _Ser3UTCR1	_UTCR1 (3)	/* Ser. port 3 UART Control Reg. 1 */
-#define _Ser3UTCR2	_UTCR2 (3)	/* Ser. port 3 UART Control Reg. 2 */
-#define _Ser3UTCR3	_UTCR3 (3)	/* Ser. port 3 UART Control Reg. 3 */
-#define _Ser3UTDR	_UTDR (3)	/* Ser. port 3 UART Data Reg.	   */
-#define _Ser3UTSR0	_UTSR0 (3)	/* Ser. port 3 UART Status Reg. 0  */
-#define _Ser3UTSR1	_UTSR1 (3)	/* Ser. port 3 UART Status Reg. 1  */
-
-#if LANGUAGE == C
-
-#define Ser1UTCR0			/* Ser. port 1 UART Control Reg. 0 */ \
-			(*((volatile Word *) io_p2v (_Ser1UTCR0)))
-#define Ser1UTCR1			/* Ser. port 1 UART Control Reg. 1 */ \
-			(*((volatile Word *) io_p2v (_Ser1UTCR1)))
-#define Ser1UTCR2			/* Ser. port 1 UART Control Reg. 2 */ \
-			(*((volatile Word *) io_p2v (_Ser1UTCR2)))
-#define Ser1UTCR3			/* Ser. port 1 UART Control Reg. 3 */ \
-			(*((volatile Word *) io_p2v (_Ser1UTCR3)))
-#define Ser1UTDR			/* Ser. port 1 UART Data Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser1UTDR)))
-#define Ser1UTSR0			/* Ser. port 1 UART Status Reg. 0  */ \
-			(*((volatile Word *) io_p2v (_Ser1UTSR0)))
-#define Ser1UTSR1			/* Ser. port 1 UART Status Reg. 1  */ \
-			(*((volatile Word *) io_p2v (_Ser1UTSR1)))
-
-#define Ser2UTCR0			/* Ser. port 2 UART Control Reg. 0 */ \
-			(*((volatile Word *) io_p2v (_Ser2UTCR0)))
-#define Ser2UTCR1			/* Ser. port 2 UART Control Reg. 1 */ \
-			(*((volatile Word *) io_p2v (_Ser2UTCR1)))
-#define Ser2UTCR2			/* Ser. port 2 UART Control Reg. 2 */ \
-			(*((volatile Word *) io_p2v (_Ser2UTCR2)))
-#define Ser2UTCR3			/* Ser. port 2 UART Control Reg. 3 */ \
-			(*((volatile Word *) io_p2v (_Ser2UTCR3)))
-#define Ser2UTCR4			/* Ser. port 2 UART Control Reg. 4 */ \
-			(*((volatile Word *) io_p2v (_Ser2UTCR4)))
-#define Ser2UTDR			/* Ser. port 2 UART Data Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser2UTDR)))
-#define Ser2UTSR0			/* Ser. port 2 UART Status Reg. 0  */ \
-			(*((volatile Word *) io_p2v (_Ser2UTSR0)))
-#define Ser2UTSR1			/* Ser. port 2 UART Status Reg. 1  */ \
-			(*((volatile Word *) io_p2v (_Ser2UTSR1)))
-
-#define Ser3UTCR0			/* Ser. port 3 UART Control Reg. 0 */ \
-			(*((volatile Word *) io_p2v (_Ser3UTCR0)))
-#define Ser3UTCR1			/* Ser. port 3 UART Control Reg. 1 */ \
-			(*((volatile Word *) io_p2v (_Ser3UTCR1)))
-#define Ser3UTCR2			/* Ser. port 3 UART Control Reg. 2 */ \
-			(*((volatile Word *) io_p2v (_Ser3UTCR2)))
-#define Ser3UTCR3			/* Ser. port 3 UART Control Reg. 3 */ \
-			(*((volatile Word *) io_p2v (_Ser3UTCR3)))
-#define Ser3UTDR			/* Ser. port 3 UART Data Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser3UTDR)))
-#define Ser3UTSR0			/* Ser. port 3 UART Status Reg. 0  */ \
-			(*((volatile Word *) io_p2v (_Ser3UTSR0)))
-#define Ser3UTSR1			/* Ser. port 3 UART Status Reg. 1  */ \
-			(*((volatile Word *) io_p2v (_Ser3UTSR1)))
-
-#elif LANGUAGE == Assembly
-#define Ser1UTCR0	( io_p2v (_Ser1UTCR0))
-#define Ser1UTCR1	( io_p2v (_Ser1UTCR1))
-#define Ser1UTCR2	( io_p2v (_Ser1UTCR2))
-#define Ser1UTCR3	( io_p2v (_Ser1UTCR3))
-#define Ser1UTDR	( io_p2v (_Ser1UTDR))
-#define Ser1UTSR0	( io_p2v (_Ser1UTSR0))
-#define Ser1UTSR1	( io_p2v (_Ser1UTSR1))
-
-#define Ser2UTCR0	( io_p2v (_Ser2UTCR0))
-#define Ser2UTCR1	( io_p2v (_Ser2UTCR1))
-#define Ser2UTCR2	( io_p2v (_Ser2UTCR2))
-#define Ser2UTCR3	( io_p2v (_Ser2UTCR3))
-#define Ser2UTCR4	( io_p2v (_Ser2UTCR4))
-#define Ser2UTDR	( io_p2v (_Ser2UTDR))
-#define Ser2UTSR0	( io_p2v (_Ser2UTSR0))
-#define Ser2UTSR1	( io_p2v (_Ser2UTSR1))
-
-#define Ser3UTCR0	( io_p2v (_Ser3UTCR0))
-#define Ser3UTCR1	( io_p2v (_Ser3UTCR1))
-#define Ser3UTCR2	( io_p2v (_Ser3UTCR2))
-#define Ser3UTCR3	( io_p2v (_Ser3UTCR3))
-#define Ser3UTDR	( io_p2v (_Ser3UTDR))
-#define Ser3UTSR0	( io_p2v (_Ser3UTSR0))
-#define Ser3UTSR1	( io_p2v (_Ser3UTSR1))
-
-#endif /* LANGUAGE == C */
-
-#define UTCR0_PE	0x00000001	/* Parity Enable		   */
-#define UTCR0_OES	0x00000002	/* Odd/Even parity Select	   */
-#define UTCR0_OddPar	(UTCR0_OES*0)	/*  Odd Parity			   */
-#define UTCR0_EvenPar	(UTCR0_OES*1)	/*  Even Parity			   */
-#define UTCR0_SBS	0x00000004	/* Stop Bit Select		   */
-#define UTCR0_1StpBit	(UTCR0_SBS*0)	/*  1 Stop Bit per frame	   */
-#define UTCR0_2StpBit	(UTCR0_SBS*1)	/*  2 Stop Bits per frame	   */
-#define UTCR0_DSS	0x00000008	/* Data Size Select		   */
-#define UTCR0_7BitData	(UTCR0_DSS*0)	/*  7-Bit Data			   */
-#define UTCR0_8BitData	(UTCR0_DSS*1)	/*  8-Bit Data			   */
-#define UTCR0_SCE	0x00000010	/* Sample Clock Enable		   */
-					/* (ser. port 1: GPIO [18],	   */
-					/* ser. port 3: GPIO [20])	   */
-#define UTCR0_RCE	0x00000020	/* Receive Clock Edge select	   */
-#define UTCR0_RcRsEdg	(UTCR0_RCE*0)	/*  Receive clock Rising-Edge	   */
-#define UTCR0_RcFlEdg	(UTCR0_RCE*1)	/*  Receive clock Falling-Edge	   */
-#define UTCR0_TCE	0x00000040	/* Transmit Clock Edge select	   */
-#define UTCR0_TrRsEdg	(UTCR0_TCE*0)	/*  Transmit clock Rising-Edge	   */
-#define UTCR0_TrFlEdg	(UTCR0_TCE*1)	/*  Transmit clock Falling-Edge    */
-#define UTCR0_Ser2IrDA			/* Ser. port 2 IrDA settings	   */ \
-			(UTCR0_1StpBit + UTCR0_8BitData)
-
-#define UTCR1_BRD	Fld (4, 0)	/* Baud Rate Divisor/16 - 1 [11:8] */
-#define UTCR2_BRD	Fld (8, 0)	/* Baud Rate Divisor/16 - 1  [7:0] */
-					/* fua = fxtl/(16*(BRD[11:0] + 1)) */
-					/* Tua = 16*(BRD [11:0] + 1)*Txtl  */
-#define UTCR1_BdRtDiv(Div)		/*  Baud Rate Divisor [16..65536]  */ \
-			(((Div) - 16)/16 >> FSize (UTCR2_BRD) << \
-			 FShft (UTCR1_BRD))
-#define UTCR2_BdRtDiv(Div)		/*  Baud Rate Divisor [16..65536]  */ \
-			(((Div) - 16)/16 & FAlnMsk (UTCR2_BRD) << \
-			 FShft (UTCR2_BRD))
-					/*  fua = fxtl/(16*Floor (Div/16)) */
-					/*  Tua = 16*Floor (Div/16)*Txtl   */
-#define UTCR1_CeilBdRtDiv(Div)		/*  Ceil. of BdRtDiv [16..65536]   */ \
-			(((Div) - 1)/16 >> FSize (UTCR2_BRD) << \
-			 FShft (UTCR1_BRD))
-#define UTCR2_CeilBdRtDiv(Div)		/*  Ceil. of BdRtDiv [16..65536]   */ \
-			(((Div) - 1)/16 & FAlnMsk (UTCR2_BRD) << \
-			 FShft (UTCR2_BRD))
-					/*  fua = fxtl/(16*Ceil (Div/16))  */
-					/*  Tua = 16*Ceil (Div/16)*Txtl    */
-
-#define UTCR3_RXE	0x00000001	/* Receive Enable		   */
-#define UTCR3_TXE	0x00000002	/* Transmit Enable		   */
-#define UTCR3_BRK	0x00000004	/* BReaK mode			   */
-#define UTCR3_RIE	0x00000008	/* Receive FIFO 1/3-to-2/3-full or */
-					/* more Interrupt Enable	   */
-#define UTCR3_TIE	0x00000010	/* Transmit FIFO 1/2-full or less  */
-					/* Interrupt Enable		   */
-#define UTCR3_LBM	0x00000020	/* Look-Back Mode		   */
-#define UTCR3_Ser2IrDA			/* Ser. port 2 IrDA settings (RIE, */ \
-					/* TIE, LBM can be set or cleared) */ \
-			(UTCR3_RXE + UTCR3_TXE)
-
-#define UTCR4_HSE	0x00000001	/* Hewlett-Packard Serial InfraRed */
-					/* (HP-SIR) modulation Enable	   */
-#define UTCR4_NRZ	(UTCR4_HSE*0)	/*  Non-Return to Zero modulation  */
-#define UTCR4_HPSIR	(UTCR4_HSE*1)	/*  HP-SIR modulation		   */
-#define UTCR4_LPM	0x00000002	/* Low-Power Mode		   */
-#define UTCR4_Z3_16Bit	(UTCR4_LPM*0)	/*  Zero pulse = 3/16 Bit time	   */
-#define UTCR4_Z1_6us	(UTCR4_LPM*1)	/*  Zero pulse = 1.6 us		   */
-
-#define UTDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
-#if 0					/* Hidden receive FIFO bits	   */
-#define UTDR_PRE	0x00000100	/*  receive PaRity Error (read)    */
-#define UTDR_FRE	0x00000200	/*  receive FRaming Error (read)   */
-#define UTDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
-#endif /* 0 */
-
-#define UTSR0_TFS	0x00000001	/* Transmit FIFO 1/2-full or less  */
-					/* Service request (read)	   */
-#define UTSR0_RFS	0x00000002	/* Receive FIFO 1/3-to-2/3-full or */
-					/* more Service request (read)	   */
-#define UTSR0_RID	0x00000004	/* Receiver IDle		   */
-#define UTSR0_RBB	0x00000008	/* Receive Beginning of Break	   */
-#define UTSR0_REB	0x00000010	/* Receive End of Break		   */
-#define UTSR0_EIF	0x00000020	/* Error In FIFO (read)		   */
-
-#define UTSR1_TBY	0x00000001	/* Transmitter BusY (read)	   */
-#define UTSR1_RNE	0x00000002	/* Receive FIFO Not Empty (read)   */
-#define UTSR1_TNF	0x00000004	/* Transmit FIFO Not Full (read)   */
-#define UTSR1_PRE	0x00000008	/* receive PaRity Error (read)	   */
-#define UTSR1_FRE	0x00000010	/* receive FRaming Error (read)    */
-#define UTSR1_ROR	0x00000020	/* Receive FIFO Over-Run (read)    */
-
-
-/*
- * Synchronous Data Link Controller (SDLC) control registers
- *
- * Registers
- *    Ser1SDCR0		Serial port 1 Synchronous Data Link Controller (SDLC)
- *			Control Register 0 (read/write).
- *    Ser1SDCR1		Serial port 1 Synchronous Data Link Controller (SDLC)
- *			Control Register 1 (read/write).
- *    Ser1SDCR2		Serial port 1 Synchronous Data Link Controller (SDLC)
- *			Control Register 2 (read/write).
- *    Ser1SDCR3		Serial port 1 Synchronous Data Link Controller (SDLC)
- *			Control Register 3 (read/write).
- *    Ser1SDCR4		Serial port 1 Synchronous Data Link Controller (SDLC)
- *			Control Register 4 (read/write).
- *    Ser1SDDR		Serial port 1 Synchronous Data Link Controller (SDLC)
- *			Data Register (read/write).
- *    Ser1SDSR0		Serial port 1 Synchronous Data Link Controller (SDLC)
- *			Status Register 0 (read/write).
- *    Ser1SDSR1		Serial port 1 Synchronous Data Link Controller (SDLC)
- *			Status Register 1 (read/write).
- *
- * Clocks
- *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
- *			or 3.5795 MHz).
- *    fsd, Tsd		Frequency, period of the SDLC communication.
- */
-
-#define _Ser1SDCR0	0x80020060	/* Ser. port 1 SDLC Control Reg. 0 */
-#define _Ser1SDCR1	0x80020064	/* Ser. port 1 SDLC Control Reg. 1 */
-#define _Ser1SDCR2	0x80020068	/* Ser. port 1 SDLC Control Reg. 2 */
-#define _Ser1SDCR3	0x8002006C	/* Ser. port 1 SDLC Control Reg. 3 */
-#define _Ser1SDCR4	0x80020070	/* Ser. port 1 SDLC Control Reg. 4 */
-#define _Ser1SDDR	0x80020078	/* Ser. port 1 SDLC Data Reg.	   */
-#define _Ser1SDSR0	0x80020080	/* Ser. port 1 SDLC Status Reg. 0  */
-#define _Ser1SDSR1	0x80020084	/* Ser. port 1 SDLC Status Reg. 1  */
-
-#if LANGUAGE == C
-#define Ser1SDCR0			/* Ser. port 1 SDLC Control Reg. 0 */ \
-			(*((volatile Word *) io_p2v (_Ser1SDCR0)))
-#define Ser1SDCR1			/* Ser. port 1 SDLC Control Reg. 1 */ \
-			(*((volatile Word *) io_p2v (_Ser1SDCR1)))
-#define Ser1SDCR2			/* Ser. port 1 SDLC Control Reg. 2 */ \
-			(*((volatile Word *) io_p2v (_Ser1SDCR2)))
-#define Ser1SDCR3			/* Ser. port 1 SDLC Control Reg. 3 */ \
-			(*((volatile Word *) io_p2v (_Ser1SDCR3)))
-#define Ser1SDCR4			/* Ser. port 1 SDLC Control Reg. 4 */ \
-			(*((volatile Word *) io_p2v (_Ser1SDCR4)))
-#define Ser1SDDR			/* Ser. port 1 SDLC Data Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser1SDDR)))
-#define Ser1SDSR0			/* Ser. port 1 SDLC Status Reg. 0  */ \
-			(*((volatile Word *) io_p2v (_Ser1SDSR0)))
-#define Ser1SDSR1			/* Ser. port 1 SDLC Status Reg. 1  */ \
-			(*((volatile Word *) io_p2v (_Ser1SDSR1)))
-#endif /* LANGUAGE == C */
-
-#define SDCR0_SUS	0x00000001	/* SDLC/UART Select		   */
-#define SDCR0_SDLC	(SDCR0_SUS*0)	/*  SDLC mode (TXD1 & RXD1)	   */
-#define SDCR0_UART	(SDCR0_SUS*1)	/*  UART mode (TXD1 & RXD1)	   */
-#define SDCR0_SDF	0x00000002	/* Single/Double start Flag select */
-#define SDCR0_SglFlg	(SDCR0_SDF*0)	/*  Single start Flag		   */
-#define SDCR0_DblFlg	(SDCR0_SDF*1)	/*  Double start Flag		   */
-#define SDCR0_LBM	0x00000004	/* Look-Back Mode		   */
-#define SDCR0_BMS	0x00000008	/* Bit Modulation Select	   */
-#define SDCR0_FM0	(SDCR0_BMS*0)	/*  Freq. Modulation zero (0)	   */
-#define SDCR0_NRZ	(SDCR0_BMS*1)	/*  Non-Return to Zero modulation  */
-#define SDCR0_SCE	0x00000010	/* Sample Clock Enable (GPIO [16]) */
-#define SDCR0_SCD	0x00000020	/* Sample Clock Direction select   */
-					/* (GPIO [16])			   */
-#define SDCR0_SClkIn	(SDCR0_SCD*0)	/*  Sample Clock Input		   */
-#define SDCR0_SClkOut	(SDCR0_SCD*1)	/*  Sample Clock Output		   */
-#define SDCR0_RCE	0x00000040	/* Receive Clock Edge select	   */
-#define SDCR0_RcRsEdg	(SDCR0_RCE*0)	/*  Receive clock Rising-Edge	   */
-#define SDCR0_RcFlEdg	(SDCR0_RCE*1)	/*  Receive clock Falling-Edge	   */
-#define SDCR0_TCE	0x00000080	/* Transmit Clock Edge select	   */
-#define SDCR0_TrRsEdg	(SDCR0_TCE*0)	/*  Transmit clock Rising-Edge	   */
-#define SDCR0_TrFlEdg	(SDCR0_TCE*1)	/*  Transmit clock Falling-Edge    */
-
-#define SDCR1_AAF	0x00000001	/* Abort After Frame enable	   */
-					/* (GPIO [17])			   */
-#define SDCR1_TXE	0x00000002	/* Transmit Enable		   */
-#define SDCR1_RXE	0x00000004	/* Receive Enable		   */
-#define SDCR1_RIE	0x00000008	/* Receive FIFO 1/3-to-2/3-full or */
-					/* more Interrupt Enable	   */
-#define SDCR1_TIE	0x00000010	/* Transmit FIFO 1/2-full or less  */
-					/* Interrupt Enable		   */
-#define SDCR1_AME	0x00000020	/* Address Match Enable		   */
-#define SDCR1_TUS	0x00000040	/* Transmit FIFO Under-run Select  */
-#define SDCR1_EFrmURn	(SDCR1_TUS*0)	/*  End Frame on Under-Run	   */
-#define SDCR1_AbortURn	(SDCR1_TUS*1)	/*  Abort on Under-Run		   */
-#define SDCR1_RAE	0x00000080	/* Receive Abort interrupt Enable  */
-
-#define SDCR2_AMV	Fld (8, 0)	/* Address Match Value		   */
-
-#define SDCR3_BRD	Fld (4, 0)	/* Baud Rate Divisor/16 - 1 [11:8] */
-#define SDCR4_BRD	Fld (8, 0)	/* Baud Rate Divisor/16 - 1  [7:0] */
-					/* fsd = fxtl/(16*(BRD[11:0] + 1)) */
-					/* Tsd = 16*(BRD[11:0] + 1)*Txtl   */
-#define SDCR3_BdRtDiv(Div)		/*  Baud Rate Divisor [16..65536]  */ \
-			(((Div) - 16)/16 >> FSize (SDCR4_BRD) << \
-			 FShft (SDCR3_BRD))
-#define SDCR4_BdRtDiv(Div)		/*  Baud Rate Divisor [16..65536]  */ \
-			(((Div) - 16)/16 & FAlnMsk (SDCR4_BRD) << \
-			 FShft (SDCR4_BRD))
-					/*  fsd = fxtl/(16*Floor (Div/16)) */
-					/*  Tsd = 16*Floor (Div/16)*Txtl   */
-#define SDCR3_CeilBdRtDiv(Div)		/*  Ceil. of BdRtDiv [16..65536]   */ \
-			(((Div) - 1)/16 >> FSize (SDCR4_BRD) << \
-			 FShft (SDCR3_BRD))
-#define SDCR4_CeilBdRtDiv(Div)		/*  Ceil. of BdRtDiv [16..65536]   */ \
-			(((Div) - 1)/16 & FAlnMsk (SDCR4_BRD) << \
-			 FShft (SDCR4_BRD))
-					/*  fsd = fxtl/(16*Ceil (Div/16))  */
-					/*  Tsd = 16*Ceil (Div/16)*Txtl    */
-
-#define SDDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
-#if 0					/* Hidden receive FIFO bits	   */
-#define SDDR_EOF	0x00000100	/*  receive End-Of-Frame (read)    */
-#define SDDR_CRE	0x00000200	/*  receive CRC Error (read)	   */
-#define SDDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
-#endif /* 0 */
-
-#define SDSR0_EIF	0x00000001	/* Error In FIFO (read)		   */
-#define SDSR0_TUR	0x00000002	/* Transmit FIFO Under-Run	   */
-#define SDSR0_RAB	0x00000004	/* Receive ABort		   */
-#define SDSR0_TFS	0x00000008	/* Transmit FIFO 1/2-full or less  */
-					/* Service request (read)	   */
-#define SDSR0_RFS	0x00000010	/* Receive FIFO 1/3-to-2/3-full or */
-					/* more Service request (read)	   */
-
-#define SDSR1_RSY	0x00000001	/* Receiver SYnchronized (read)    */
-#define SDSR1_TBY	0x00000002	/* Transmitter BusY (read)	   */
-#define SDSR1_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
-#define SDSR1_TNF	0x00000008	/* Transmit FIFO Not Full (read)   */
-#define SDSR1_RTD	0x00000010	/* Receive Transition Detected	   */
-#define SDSR1_EOF	0x00000020	/* receive End-Of-Frame (read)	   */
-#define SDSR1_CRE	0x00000040	/* receive CRC Error (read)	   */
-#define SDSR1_ROR	0x00000080	/* Receive FIFO Over-Run (read)    */
-
-
-/*
- * High-Speed Serial to Parallel controller (HSSP) control registers
- *
- * Registers
- *    Ser2HSCR0		Serial port 2 High-Speed Serial to Parallel
- *			controller (HSSP) Control Register 0 (read/write).
- *    Ser2HSCR1		Serial port 2 High-Speed Serial to Parallel
- *			controller (HSSP) Control Register 1 (read/write).
- *    Ser2HSDR		Serial port 2 High-Speed Serial to Parallel
- *			controller (HSSP) Data Register (read/write).
- *    Ser2HSSR0		Serial port 2 High-Speed Serial to Parallel
- *			controller (HSSP) Status Register 0 (read/write).
- *    Ser2HSSR1		Serial port 2 High-Speed Serial to Parallel
- *			controller (HSSP) Status Register 1 (read).
- *    Ser2HSCR2		Serial port 2 High-Speed Serial to Parallel
- *			controller (HSSP) Control Register 2 (read/write).
- *			[The HSCR2 register is only implemented in
- *			versions 2.0 (rev. = 8) and higher of the StrongARM
- *			SA-1100.]
- */
-
-#define _Ser2HSCR0	0x80040060	/* Ser. port 2 HSSP Control Reg. 0 */
-#define _Ser2HSCR1	0x80040064	/* Ser. port 2 HSSP Control Reg. 1 */
-#define _Ser2HSDR	0x8004006C	/* Ser. port 2 HSSP Data Reg.	   */
-#define _Ser2HSSR0	0x80040074	/* Ser. port 2 HSSP Status Reg. 0  */
-#define _Ser2HSSR1	0x80040078	/* Ser. port 2 HSSP Status Reg. 1  */
-#define _Ser2HSCR2	0x90060028	/* Ser. port 2 HSSP Control Reg. 2 */
-
-#if LANGUAGE == C
-#define Ser2HSCR0			/* Ser. port 2 HSSP Control Reg. 0 */ \
-			(*((volatile Word *) io_p2v (_Ser2HSCR0)))
-#define Ser2HSCR1			/* Ser. port 2 HSSP Control Reg. 1 */ \
-			(*((volatile Word *) io_p2v (_Ser2HSCR1)))
-#define Ser2HSDR			/* Ser. port 2 HSSP Data Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser2HSDR)))
-#define Ser2HSSR0			/* Ser. port 2 HSSP Status Reg. 0  */ \
-			(*((volatile Word *) io_p2v (_Ser2HSSR0)))
-#define Ser2HSSR1			/* Ser. port 2 HSSP Status Reg. 1  */ \
-			(*((volatile Word *) io_p2v (_Ser2HSSR1)))
-#define Ser2HSCR2			/* Ser. port 2 HSSP Control Reg. 2 */ \
-			(*((volatile Word *) io_p2v (_Ser2HSCR2)))
-#endif /* LANGUAGE == C */
-
-#define HSCR0_ITR	0x00000001	/* IrDA Transmission Rate	   */
-#define HSCR0_UART	(HSCR0_ITR*0)	/*  UART mode (115.2 kb/s if IrDA) */
-#define HSCR0_HSSP	(HSCR0_ITR*1)	/*  HSSP mode (4 Mb/s)		   */
-#define HSCR0_LBM	0x00000002	/* Look-Back Mode		   */
-#define HSCR0_TUS	0x00000004	/* Transmit FIFO Under-run Select  */
-#define HSCR0_EFrmURn	(HSCR0_TUS*0)	/*  End Frame on Under-Run	   */
-#define HSCR0_AbortURn	(HSCR0_TUS*1)	/*  Abort on Under-Run		   */
-#define HSCR0_TXE	0x00000008	/* Transmit Enable		   */
-#define HSCR0_RXE	0x00000010	/* Receive Enable		   */
-#define HSCR0_RIE	0x00000020	/* Receive FIFO 2/5-to-3/5-full or */
-					/* more Interrupt Enable	   */
-#define HSCR0_TIE	0x00000040	/* Transmit FIFO 1/2-full or less  */
-					/* Interrupt Enable		   */
-#define HSCR0_AME	0x00000080	/* Address Match Enable		   */
-
-#define HSCR1_AMV	Fld (8, 0)	/* Address Match Value		   */
-
-#define HSDR_DATA	Fld (8, 0)	/* receive/transmit DATA FIFOs	   */
-#if 0					/* Hidden receive FIFO bits	   */
-#define HSDR_EOF	0x00000100	/*  receive End-Of-Frame (read)    */
-#define HSDR_CRE	0x00000200	/*  receive CRC Error (read)	   */
-#define HSDR_ROR	0x00000400	/*  Receive FIFO Over-Run (read)   */
-#endif /* 0 */
-
-#define HSSR0_EIF	0x00000001	/* Error In FIFO (read)		   */
-#define HSSR0_TUR	0x00000002	/* Transmit FIFO Under-Run	   */
-#define HSSR0_RAB	0x00000004	/* Receive ABort		   */
-#define HSSR0_TFS	0x00000008	/* Transmit FIFO 1/2-full or less  */
-					/* Service request (read)	   */
-#define HSSR0_RFS	0x00000010	/* Receive FIFO 2/5-to-3/5-full or */
-					/* more Service request (read)	   */
-#define HSSR0_FRE	0x00000020	/* receive FRaming Error	   */
-
-#define HSSR1_RSY	0x00000001	/* Receiver SYnchronized (read)    */
-#define HSSR1_TBY	0x00000002	/* Transmitter BusY (read)	   */
-#define HSSR1_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
-#define HSSR1_TNF	0x00000008	/* Transmit FIFO Not Full (read)   */
-#define HSSR1_EOF	0x00000010	/* receive End-Of-Frame (read)	   */
-#define HSSR1_CRE	0x00000020	/* receive CRC Error (read)	   */
-#define HSSR1_ROR	0x00000040	/* Receive FIFO Over-Run (read)    */
-
-#define HSCR2_TXP	0x00040000	/* Transmit data Polarity (TXD_2)  */
-#define HSCR2_TrDataL	(HSCR2_TXP*0)	/*  Transmit Data active Low	   */
-					/*  (inverted)			   */
-#define HSCR2_TrDataH	(HSCR2_TXP*1)	/*  Transmit Data active High	   */
-					/*  (non-inverted)		   */
-#define HSCR2_RXP	0x00080000	/* Receive data Polarity (RXD_2)   */
-#define HSCR2_RcDataL	(HSCR2_RXP*0)	/*  Receive Data active Low	   */
-					/*  (inverted)			   */
-#define HSCR2_RcDataH	(HSCR2_RXP*1)	/*  Receive Data active High	   */
-					/*  (non-inverted)		   */
-
-
-/*
- * Multi-media Communications Port (MCP) control registers
- *
- * Registers
- *    Ser4MCCR0		Serial port 4 Multi-media Communications Port (MCP)
- *			Control Register 0 (read/write).
- *    Ser4MCDR0		Serial port 4 Multi-media Communications Port (MCP)
- *			Data Register 0 (audio, read/write).
- *    Ser4MCDR1		Serial port 4 Multi-media Communications Port (MCP)
- *			Data Register 1 (telecom, read/write).
- *    Ser4MCDR2		Serial port 4 Multi-media Communications Port (MCP)
- *			Data Register 2 (CODEC registers, read/write).
- *    Ser4MCSR		Serial port 4 Multi-media Communications Port (MCP)
- *			Status Register (read/write).
- *    Ser4MCCR1		Serial port 4 Multi-media Communications Port (MCP)
- *			Control Register 1 (read/write).
- *			[The MCCR1 register is only implemented in
- *			versions 2.0 (rev. = 8) and higher of the StrongARM
- *			SA-1100.]
- *
- * Clocks
- *    fmc, Tmc		Frequency, period of the MCP communication (10 MHz,
- *			12 MHz, or GPIO [21]).
- *    faud, Taud	Frequency, period of the audio sampling.
- *    ftcm, Ttcm	Frequency, period of the telecom sampling.
- */
-
-#define _Ser4MCCR0	0x80060000	/* Ser. port 4 MCP Control Reg. 0  */
-#define _Ser4MCDR0	0x80060008	/* Ser. port 4 MCP Data Reg. 0	   */
-					/* (audio)			   */
-#define _Ser4MCDR1	0x8006000C	/* Ser. port 4 MCP Data Reg. 1	   */
-					/* (telecom)			   */
-#define _Ser4MCDR2	0x80060010	/* Ser. port 4 MCP Data Reg. 2	   */
-					/* (CODEC reg.)			   */
-#define _Ser4MCSR	0x80060018	/* Ser. port 4 MCP Status Reg.	   */
-#define _Ser4MCCR1	0x90060030	/* Ser. port 4 MCP Control Reg. 1  */
-
-#if LANGUAGE == C
-#define Ser4MCCR0			/* Ser. port 4 MCP Control Reg. 0  */ \
-			(*((volatile Word *) io_p2v (_Ser4MCCR0)))
-#define Ser4MCDR0			/* Ser. port 4 MCP Data Reg. 0	   */ \
-					/* (audio)			   */ \
-			(*((volatile Word *) io_p2v (_Ser4MCDR0)))
-#define Ser4MCDR1			/* Ser. port 4 MCP Data Reg. 1	   */ \
-					/* (telecom)			   */ \
-			(*((volatile Word *) io_p2v (_Ser4MCDR1)))
-#define Ser4MCDR2			/* Ser. port 4 MCP Data Reg. 2	   */ \
-					/* (CODEC reg.)			   */ \
-			(*((volatile Word *) io_p2v (_Ser4MCDR2)))
-#define Ser4MCSR			/* Ser. port 4 MCP Status Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser4MCSR)))
-#define Ser4MCCR1			/* Ser. port 4 MCP Control Reg. 1  */ \
-			(*((volatile Word *) io_p2v (_Ser4MCCR1)))
-#endif /* LANGUAGE == C */
-
-#define MCCR0_ASD	Fld (7, 0)	/* Audio Sampling rate Divisor/32  */
-					/* [6..127]			   */
-					/* faud = fmc/(32*ASD)		   */
-					/* Taud = 32*ASD*Tmc		   */
-#define MCCR0_AudSmpDiv(Div)		/*  Audio Sampling rate Divisor    */ \
-					/*  [192..4064]			   */ \
-			((Div)/32 << FShft (MCCR0_ASD))
-					/*  faud = fmc/(32*Floor (Div/32)) */
-					/*  Taud = 32*Floor (Div/32)*Tmc   */
-#define MCCR0_CeilAudSmpDiv(Div)	/*  Ceil. of AudSmpDiv [192..4064] */ \
-			(((Div) + 31)/32 << FShft (MCCR0_ASD))
-					/*  faud = fmc/(32*Ceil (Div/32))  */
-					/*  Taud = 32*Ceil (Div/32)*Tmc    */
-#define MCCR0_TSD	Fld (7, 8)	/* Telecom Sampling rate	   */
-					/* Divisor/32 [16..127]		   */
-					/* ftcm = fmc/(32*TSD)		   */
-					/* Ttcm = 32*TSD*Tmc		   */
-#define MCCR0_TcmSmpDiv(Div)		/*  Telecom Sampling rate Divisor  */ \
-					/*  [512..4064]			   */ \
-			((Div)/32 << FShft (MCCR0_TSD))
-					/*  ftcm = fmc/(32*Floor (Div/32)) */
-					/*  Ttcm = 32*Floor (Div/32)*Tmc   */
-#define MCCR0_CeilTcmSmpDiv(Div)	/*  Ceil. of TcmSmpDiv [512..4064] */ \
-			(((Div) + 31)/32 << FShft (MCCR0_TSD))
-					/*  ftcm = fmc/(32*Ceil (Div/32))  */
-					/*  Ttcm = 32*Ceil (Div/32)*Tmc    */
-#define MCCR0_MCE	0x00010000	/* MCP Enable			   */
-#define MCCR0_ECS	0x00020000	/* External Clock Select	   */
-#define MCCR0_IntClk	(MCCR0_ECS*0)	/*  Internal Clock (10 or 12 MHz)  */
-#define MCCR0_ExtClk	(MCCR0_ECS*1)	/*  External Clock (GPIO [21])	   */
-#define MCCR0_ADM	0x00040000	/* A/D (audio/telecom) data	   */
-					/* sampling/storing Mode	   */
-#define MCCR0_VldBit	(MCCR0_ADM*0)	/*  Valid Bit storing mode	   */
-#define MCCR0_SmpCnt	(MCCR0_ADM*1)	/*  Sampling Counter storing mode  */
-#define MCCR0_TTE	0x00080000	/* Telecom Transmit FIFO 1/2-full  */
-					/* or less interrupt Enable	   */
-#define MCCR0_TRE	0x00100000	/* Telecom Receive FIFO 1/2-full   */
-					/* or more interrupt Enable	   */
-#define MCCR0_ATE	0x00200000	/* Audio Transmit FIFO 1/2-full    */
-					/* or less interrupt Enable	   */
-#define MCCR0_ARE	0x00400000	/* Audio Receive FIFO 1/2-full or  */
-					/* more interrupt Enable	   */
-#define MCCR0_LBM	0x00800000	/* Look-Back Mode		   */
-#define MCCR0_ECP	Fld (2, 24)	/* External Clock Prescaler - 1    */
-#define MCCR0_ExtClkDiv(Div)		/*  External Clock Divisor [1..4]  */ \
-			(((Div) - 1) << FShft (MCCR0_ECP))
-
-#define MCDR0_DATA	Fld (12, 4)	/* receive/transmit audio DATA	   */
-					/* FIFOs			   */
-
-#define MCDR1_DATA	Fld (14, 2)	/* receive/transmit telecom DATA   */
-					/* FIFOs			   */
-
-					/* receive/transmit CODEC reg.	   */
-					/* FIFOs:			   */
-#define MCDR2_DATA	Fld (16, 0)	/*  reg. DATA			   */
-#define MCDR2_RW	0x00010000	/*  reg. Read/Write (transmit)	   */
-#define MCDR2_Rd	(MCDR2_RW*0)	/*   reg. Read			   */
-#define MCDR2_Wr	(MCDR2_RW*1)	/*   reg. Write			   */
-#define MCDR2_ADD	Fld (4, 17)	/*  reg. ADDress		   */
-
-#define MCSR_ATS	0x00000001	/* Audio Transmit FIFO 1/2-full    */
-					/* or less Service request (read)  */
-#define MCSR_ARS	0x00000002	/* Audio Receive FIFO 1/2-full or  */
-					/* more Service request (read)	   */
-#define MCSR_TTS	0x00000004	/* Telecom Transmit FIFO 1/2-full  */
-					/* or less Service request (read)  */
-#define MCSR_TRS	0x00000008	/* Telecom Receive FIFO 1/2-full   */
-					/* or more Service request (read)  */
-#define MCSR_ATU	0x00000010	/* Audio Transmit FIFO Under-run   */
-#define MCSR_ARO	0x00000020	/* Audio Receive FIFO Over-run	   */
-#define MCSR_TTU	0x00000040	/* Telecom Transmit FIFO Under-run */
-#define MCSR_TRO	0x00000080	/* Telecom Receive FIFO Over-run   */
-#define MCSR_ANF	0x00000100	/* Audio transmit FIFO Not Full    */
-					/* (read)			   */
-#define MCSR_ANE	0x00000200	/* Audio receive FIFO Not Empty    */
-					/* (read)			   */
-#define MCSR_TNF	0x00000400	/* Telecom transmit FIFO Not Full  */
-					/* (read)			   */
-#define MCSR_TNE	0x00000800	/* Telecom receive FIFO Not Empty  */
-					/* (read)			   */
-#define MCSR_CWC	0x00001000	/* CODEC register Write Completed  */
-					/* (read)			   */
-#define MCSR_CRC	0x00002000	/* CODEC register Read Completed   */
-					/* (read)			   */
-#define MCSR_ACE	0x00004000	/* Audio CODEC Enabled (read)	   */
-#define MCSR_TCE	0x00008000	/* Telecom CODEC Enabled (read)    */
-
-#define MCCR1_CFS	0x00100000	/* Clock Freq. Select		   */
-#define MCCR1_F12MHz	(MCCR1_CFS*0)	/*  Freq. (fmc) = ~ 12 MHz	   */
-					/*  (11.981 MHz)		   */
-#define MCCR1_F10MHz	(MCCR1_CFS*1)	/*  Freq. (fmc) = ~ 10 MHz	   */
-					/*  (9.585 MHz)			   */
-
-
-/*
- * Synchronous Serial Port (SSP) control registers
- *
- * Registers
- *    Ser4SSCR0		Serial port 4 Synchronous Serial Port (SSP) Control
- *			Register 0 (read/write).
- *    Ser4SSCR1		Serial port 4 Synchronous Serial Port (SSP) Control
- *			Register 1 (read/write).
- *			[Bits SPO and SP are only implemented in versions 2.0
- *			(rev. = 8) and higher of the StrongARM SA-1100.]
- *    Ser4SSDR		Serial port 4 Synchronous Serial Port (SSP) Data
- *			Register (read/write).
- *    Ser4SSSR		Serial port 4 Synchronous Serial Port (SSP) Status
- *			Register (read/write).
- *
- * Clocks
- *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
- *			or 3.5795 MHz).
- *    fss, Tss		Frequency, period of the SSP communication.
- */
-
-#define _Ser4SSCR0	0x80070060	/* Ser. port 4 SSP Control Reg. 0  */
-#define _Ser4SSCR1	0x80070064	/* Ser. port 4 SSP Control Reg. 1  */
-#define _Ser4SSDR	0x8007006C	/* Ser. port 4 SSP Data Reg.	   */
-#define _Ser4SSSR	0x80070074	/* Ser. port 4 SSP Status Reg.	   */
-
-#if LANGUAGE == C
-#define Ser4SSCR0			/* Ser. port 4 SSP Control Reg. 0  */ \
-			(*((volatile Word *) io_p2v (_Ser4SSCR0)))
-#define Ser4SSCR1			/* Ser. port 4 SSP Control Reg. 1  */ \
-			(*((volatile Word *) io_p2v (_Ser4SSCR1)))
-#define Ser4SSDR			/* Ser. port 4 SSP Data Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser4SSDR)))
-#define Ser4SSSR			/* Ser. port 4 SSP Status Reg.	   */ \
-			(*((volatile Word *) io_p2v (_Ser4SSSR)))
-#endif /* LANGUAGE == C */
-
-#define SSCR0_DSS	Fld (4, 0)	/* Data Size - 1 Select [3..15]    */
-#define SSCR0_DataSize(Size)		/*  Data Size Select [4..16]	   */ \
-			(((Size) - 1) << FShft (SSCR0_DSS))
-#define SSCR0_FRF	Fld (2, 4)	/* FRame Format			   */
-#define SSCR0_Motorola			/*  Motorola Serial Peripheral	   */ \
-					/*  Interface (SPI) format	   */ \
-			(0 << FShft (SSCR0_FRF))
-#define SSCR0_TI			/*  Texas Instruments Synchronous  */ \
-					/*  Serial format		   */ \
-			(1 << FShft (SSCR0_FRF))
-#define SSCR0_National			/*  National Microwire format	   */ \
-			(2 << FShft (SSCR0_FRF))
-#define SSCR0_SSE	0x00000080	/* SSP Enable			   */
-#define SSCR0_SCR	Fld (8, 8)	/* Serial Clock Rate divisor/2 - 1 */
-					/* fss = fxtl/(2*(SCR + 1))	   */
-					/* Tss = 2*(SCR + 1)*Txtl	   */
-#define SSCR0_SerClkDiv(Div)		/*  Serial Clock Divisor [2..512]  */ \
-			(((Div) - 2)/2 << FShft (SSCR0_SCR))
-					/*  fss = fxtl/(2*Floor (Div/2))   */
-					/*  Tss = 2*Floor (Div/2)*Txtl	   */
-#define SSCR0_CeilSerClkDiv(Div)	/*  Ceil. of SerClkDiv [2..512]    */ \
-			(((Div) - 1)/2 << FShft (SSCR0_SCR))
-					/*  fss = fxtl/(2*Ceil (Div/2))    */
-					/*  Tss = 2*Ceil (Div/2)*Txtl	   */
-
-#define SSCR1_RIE	0x00000001	/* Receive FIFO 1/2-full or more   */
-					/* Interrupt Enable		   */
-#define SSCR1_TIE	0x00000002	/* Transmit FIFO 1/2-full or less  */
-					/* Interrupt Enable		   */
-#define SSCR1_LBM	0x00000004	/* Look-Back Mode		   */
-#define SSCR1_SPO	0x00000008	/* Sample clock (SCLK) POlarity    */
-#define SSCR1_SClkIactL	(SSCR1_SPO*0)	/*  Sample Clock Inactive Low	   */
-#define SSCR1_SClkIactH	(SSCR1_SPO*1)	/*  Sample Clock Inactive High	   */
-#define SSCR1_SP	0x00000010	/* Sample clock (SCLK) Phase	   */
-#define SSCR1_SClk1P	(SSCR1_SP*0)	/*  Sample Clock active 1 Period   */
-					/*  after frame (SFRM, 1st edge)   */
-#define SSCR1_SClk1_2P	(SSCR1_SP*1)	/*  Sample Clock active 1/2 Period */
-					/*  after frame (SFRM, 1st edge)   */
-#define SSCR1_ECS	0x00000020	/* External Clock Select	   */
-#define SSCR1_IntClk	(SSCR1_ECS*0)	/*  Internal Clock		   */
-#define SSCR1_ExtClk	(SSCR1_ECS*1)	/*  External Clock (GPIO [19])	   */
-
-#define SSDR_DATA	Fld (16, 0)	/* receive/transmit DATA FIFOs	   */
-
-#define SSSR_TNF	0x00000002	/* Transmit FIFO Not Full (read)   */
-#define SSSR_RNE	0x00000004	/* Receive FIFO Not Empty (read)   */
-#define SSSR_BSY	0x00000008	/* SSP BuSY (read)		   */
-#define SSSR_TFS	0x00000010	/* Transmit FIFO 1/2-full or less  */
-					/* Service request (read)	   */
-#define SSSR_RFS	0x00000020	/* Receive FIFO 1/2-full or more   */
-					/* Service request (read)	   */
-#define SSSR_ROR	0x00000040	/* Receive FIFO Over-Run	   */
-
-
-/*
- * Operating System (OS) timer control registers
- *
- * Registers
- *    OSMR0		Operating System (OS) timer Match Register 0
- *			(read/write).
- *    OSMR1		Operating System (OS) timer Match Register 1
- *			(read/write).
- *    OSMR2		Operating System (OS) timer Match Register 2
- *			(read/write).
- *    OSMR3		Operating System (OS) timer Match Register 3
- *			(read/write).
- *    OSCR		Operating System (OS) timer Counter Register
- *			(read/write).
- *    OSSR		Operating System (OS) timer Status Register
- *			(read/write).
- *    OWER		Operating System (OS) timer Watch-dog Enable Register
- *			(read/write).
- *    OIER		Operating System (OS) timer Interrupt Enable Register
- *			(read/write).
- */
-
-#define _OSMR(Nb)			/* OS timer Match Reg. [0..3]	   */ \
-			(0x90000000 + (Nb)*4)
-#define _OSMR0		_OSMR (0)	/* OS timer Match Reg. 0	   */
-#define _OSMR1		_OSMR (1)	/* OS timer Match Reg. 1	   */
-#define _OSMR2		_OSMR (2)	/* OS timer Match Reg. 2	   */
-#define _OSMR3		_OSMR (3)	/* OS timer Match Reg. 3	   */
-#define _OSCR		0x90000010	/* OS timer Counter Reg.	   */
-#define _OSSR		0x90000014	/* OS timer Status Reg.		   */
-#define _OWER		0x90000018	/* OS timer Watch-dog Enable Reg.  */
-#define _OIER		0x9000001C	/* OS timer Interrupt Enable Reg.  */
-
-#if LANGUAGE == C
-#define OSMR				/* OS timer Match Reg. [0..3]	   */ \
-			((volatile Word *) io_p2v (_OSMR (0)))
-#define OSMR0		(OSMR [0])	/* OS timer Match Reg. 0	   */
-#define OSMR1		(OSMR [1])	/* OS timer Match Reg. 1	   */
-#define OSMR2		(OSMR [2])	/* OS timer Match Reg. 2	   */
-#define OSMR3		(OSMR [3])	/* OS timer Match Reg. 3	   */
-#define OSCR				/* OS timer Counter Reg.	   */ \
-			(*((volatile Word *) io_p2v (_OSCR)))
-#define OSSR				/* OS timer Status Reg.		   */ \
-			(*((volatile Word *) io_p2v (_OSSR)))
-#define OWER				/* OS timer Watch-dog Enable Reg.  */ \
-			(*((volatile Word *) io_p2v (_OWER)))
-#define OIER				/* OS timer Interrupt Enable Reg.  */ \
-			(*((volatile Word *) io_p2v (_OIER)))
-#endif /* LANGUAGE == C */
-
-#define OSSR_M(Nb)			/* Match detected [0..3]	   */ \
-			(0x00000001 << (Nb))
-#define OSSR_M0		OSSR_M (0)	/* Match detected 0		   */
-#define OSSR_M1		OSSR_M (1)	/* Match detected 1		   */
-#define OSSR_M2		OSSR_M (2)	/* Match detected 2		   */
-#define OSSR_M3		OSSR_M (3)	/* Match detected 3		   */
-
-#define OWER_WME	0x00000001	/* Watch-dog Match Enable	   */
-					/* (set only)			   */
-
-#define OIER_E(Nb)			/* match interrupt Enable [0..3]   */ \
-			(0x00000001 << (Nb))
-#define OIER_E0		OIER_E (0)	/* match interrupt Enable 0	   */
-#define OIER_E1		OIER_E (1)	/* match interrupt Enable 1	   */
-#define OIER_E2		OIER_E (2)	/* match interrupt Enable 2	   */
-#define OIER_E3		OIER_E (3)	/* match interrupt Enable 3	   */
-
-
-/*
- * Real-Time Clock (RTC) control registers
- *
- * Registers
- *    RTAR		Real-Time Clock (RTC) Alarm Register (read/write).
- *    RCNR		Real-Time Clock (RTC) CouNt Register (read/write).
- *    RTTR		Real-Time Clock (RTC) Trim Register (read/write).
- *    RTSR		Real-Time Clock (RTC) Status Register (read/write).
- *
- * Clocks
- *    frtx, Trtx	Frequency, period of the real-time clock crystal
- *			(32.768 kHz nominal).
- *    frtc, Trtc	Frequency, period of the real-time clock counter
- *			(1 Hz nominal).
- */
-
-#define _RTAR		0x90010000	/* RTC Alarm Reg.		   */
-#define _RCNR		0x90010004	/* RTC CouNt Reg.		   */
-#define _RTTR		0x90010008	/* RTC Trim Reg.		   */
-#define _RTSR		0x90010010	/* RTC Status Reg.		   */
-
-#if LANGUAGE == C
-#define RTAR				/* RTC Alarm Reg.		   */ \
-			(*((volatile Word *) io_p2v (_RTAR)))
-#define RCNR				/* RTC CouNt Reg.		   */ \
-			(*((volatile Word *) io_p2v (_RCNR)))
-#define RTTR				/* RTC Trim Reg.		   */ \
-			(*((volatile Word *) io_p2v (_RTTR)))
-#define RTSR				/* RTC Status Reg.		   */ \
-			(*((volatile Word *) io_p2v (_RTSR)))
-#endif /* LANGUAGE == C */
-
-#define RTTR_C		Fld (16, 0)	/* clock divider Count - 1	   */
-#define RTTR_D		Fld (10, 16)	/* trim Delete count		   */
-					/* frtc = (1023*(C + 1) - D)*frtx/ */
-					/*	  (1023*(C + 1)^2)	   */
-					/* Trtc = (1023*(C + 1)^2)*Trtx/   */
-					/*	  (1023*(C + 1) - D)	   */
-
-#define RTSR_AL		0x00000001	/* ALarm detected		   */
-#define RTSR_HZ		0x00000002	/* 1 Hz clock detected		   */
-#define RTSR_ALE	0x00000004	/* ALarm interrupt Enable	   */
-#define RTSR_HZE	0x00000008	/* 1 Hz clock interrupt Enable	   */
-
-
-/*
- * Power Manager (PM) control registers
- *
- * Registers
- *    PMCR		Power Manager (PM) Control Register (read/write).
- *    PSSR		Power Manager (PM) Sleep Status Register (read/write).
- *    PSPR		Power Manager (PM) Scratch-Pad Register (read/write).
- *    PWER		Power Manager (PM) Wake-up Enable Register
- *			(read/write).
- *    PCFR		Power Manager (PM) general ConFiguration Register
- *			(read/write).
- *    PPCR		Power Manager (PM) Phase-Locked Loop (PLL)
- *			Configuration Register (read/write).
- *    PGSR		Power Manager (PM) General-Purpose Input/Output (GPIO)
- *			Sleep state Register (read/write, see GPIO pins).
- *    POSR		Power Manager (PM) Oscillator Status Register (read).
- *
- * Clocks
- *    fxtl, Txtl	Frequency, period of the system crystal (3.6864 MHz
- *			or 3.5795 MHz).
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- */
-
-#define _PMCR		0x90020000	/* PM Control Reg.		   */
-#define _PSSR		0x90020004	/* PM Sleep Status Reg.		   */
-#define _PSPR		0x90020008	/* PM Scratch-Pad Reg.		   */
-#define _PWER		0x9002000C	/* PM Wake-up Enable Reg.	   */
-#define _PCFR		0x90020010	/* PM general ConFiguration Reg.   */
-#define _PPCR		0x90020014	/* PM PLL Configuration Reg.	   */
-#define _PGSR		0x90020018	/* PM GPIO Sleep state Reg.	   */
-#define _POSR		0x9002001C	/* PM Oscillator Status Reg.	   */
-
-#if LANGUAGE == C
-#define PMCR				/* PM Control Reg.		   */ \
-			(*((volatile Word *) io_p2v (_PMCR)))
-#define PSSR				/* PM Sleep Status Reg.		   */ \
-			(*((volatile Word *) io_p2v (_PSSR)))
-#define PSPR				/* PM Scratch-Pad Reg.		   */ \
-			(*((volatile Word *) io_p2v (_PSPR)))
-#define PWER				/* PM Wake-up Enable Reg.	   */ \
-			(*((volatile Word *) io_p2v (_PWER)))
-#define PCFR				/* PM general ConFiguration Reg.   */ \
-			(*((volatile Word *) io_p2v (_PCFR)))
-#define PPCR				/* PM PLL Configuration Reg.	   */ \
-			(*((volatile Word *) io_p2v (_PPCR)))
-#define PGSR				/* PM GPIO Sleep state Reg.	   */ \
-			(*((volatile Word *) io_p2v (_PGSR)))
-#define POSR				/* PM Oscillator Status Reg.	   */ \
-			(*((volatile Word *) io_p2v (_POSR)))
-
-#elif LANGUAGE == Assembly
-#define PMCR		(io_p2v (_PMCR))
-#define PSSR		(io_p2v (_PSSR))
-#define PSPR		(io_p2v (_PSPR))
-#define PWER		(io_p2v (_PWER))
-#define PCFR		(io_p2v (_PCFR))
-#define PPCR		(io_p2v (_PPCR))
-#define PGSR		(io_p2v (_PGSR))
-#define POSR		(io_p2v (_POSR))
-
-#endif /* LANGUAGE == C */
-
-#define PMCR_SF		0x00000001	/* Sleep Force (set only)	   */
-
-#define PSSR_SS		0x00000001	/* Software Sleep		   */
-#define PSSR_BFS	0x00000002	/* Battery Fault Status		   */
-					/* (BATT_FAULT)			   */
-#define PSSR_VFS	0x00000004	/* Vdd Fault Status (VDD_FAULT)    */
-#define PSSR_DH		0x00000008	/* DRAM control Hold		   */
-#define PSSR_PH		0x00000010	/* Peripheral control Hold	   */
-
-#define PWER_GPIO(Nb)	GPIO_GPIO (Nb)	/* GPIO [0..27] wake-up enable	   */
-#define PWER_GPIO0	PWER_GPIO (0)	/* GPIO  [0] wake-up enable	   */
-#define PWER_GPIO1	PWER_GPIO (1)	/* GPIO  [1] wake-up enable	   */
-#define PWER_GPIO2	PWER_GPIO (2)	/* GPIO  [2] wake-up enable	   */
-#define PWER_GPIO3	PWER_GPIO (3)	/* GPIO  [3] wake-up enable	   */
-#define PWER_GPIO4	PWER_GPIO (4)	/* GPIO  [4] wake-up enable	   */
-#define PWER_GPIO5	PWER_GPIO (5)	/* GPIO  [5] wake-up enable	   */
-#define PWER_GPIO6	PWER_GPIO (6)	/* GPIO  [6] wake-up enable	   */
-#define PWER_GPIO7	PWER_GPIO (7)	/* GPIO  [7] wake-up enable	   */
-#define PWER_GPIO8	PWER_GPIO (8)	/* GPIO  [8] wake-up enable	   */
-#define PWER_GPIO9	PWER_GPIO (9)	/* GPIO  [9] wake-up enable	   */
-#define PWER_GPIO10	PWER_GPIO (10)	/* GPIO [10] wake-up enable	   */
-#define PWER_GPIO11	PWER_GPIO (11)	/* GPIO [11] wake-up enable	   */
-#define PWER_GPIO12	PWER_GPIO (12)	/* GPIO [12] wake-up enable	   */
-#define PWER_GPIO13	PWER_GPIO (13)	/* GPIO [13] wake-up enable	   */
-#define PWER_GPIO14	PWER_GPIO (14)	/* GPIO [14] wake-up enable	   */
-#define PWER_GPIO15	PWER_GPIO (15)	/* GPIO [15] wake-up enable	   */
-#define PWER_GPIO16	PWER_GPIO (16)	/* GPIO [16] wake-up enable	   */
-#define PWER_GPIO17	PWER_GPIO (17)	/* GPIO [17] wake-up enable	   */
-#define PWER_GPIO18	PWER_GPIO (18)	/* GPIO [18] wake-up enable	   */
-#define PWER_GPIO19	PWER_GPIO (19)	/* GPIO [19] wake-up enable	   */
-#define PWER_GPIO20	PWER_GPIO (20)	/* GPIO [20] wake-up enable	   */
-#define PWER_GPIO21	PWER_GPIO (21)	/* GPIO [21] wake-up enable	   */
-#define PWER_GPIO22	PWER_GPIO (22)	/* GPIO [22] wake-up enable	   */
-#define PWER_GPIO23	PWER_GPIO (23)	/* GPIO [23] wake-up enable	   */
-#define PWER_GPIO24	PWER_GPIO (24)	/* GPIO [24] wake-up enable	   */
-#define PWER_GPIO25	PWER_GPIO (25)	/* GPIO [25] wake-up enable	   */
-#define PWER_GPIO26	PWER_GPIO (26)	/* GPIO [26] wake-up enable	   */
-#define PWER_GPIO27	PWER_GPIO (27)	/* GPIO [27] wake-up enable	   */
-#define PWER_RTC	0x80000000	/* RTC alarm wake-up enable	   */
-
-#define PCFR_OPDE	0x00000001	/* Oscillator Power-Down Enable    */
-#define PCFR_ClkRun	(PCFR_OPDE*0)	/*  Clock Running in sleep mode    */
-#define PCFR_ClkStp	(PCFR_OPDE*1)	/*  Clock Stopped in sleep mode    */
-#define PCFR_FP		0x00000002	/* Float PCMCIA pins		   */
-#define PCFR_PCMCIANeg	(PCFR_FP*0)	/*  PCMCIA pins Negated (1)	   */
-#define PCFR_PCMCIAFlt	(PCFR_FP*1)	/*  PCMCIA pins Floating	   */
-#define PCFR_FS		0x00000004	/* Float Static memory pins	   */
-#define PCFR_StMemNeg	(PCFR_FS*0)	/*  Static Memory pins Negated (1) */
-#define PCFR_StMemFlt	(PCFR_FS*1)	/*  Static Memory pins Floating    */
-#define PCFR_FO		0x00000008	/* Force RTC oscillator		   */
-					/* (32.768 kHz) enable On	   */
-
-#define PPCR_CCF	Fld (5, 0)	/* CPU core Clock (CCLK) Freq.	   */
-#define PPCR_Fx16			/*  Freq. x 16 (fcpu = 16*fxtl)    */ \
-			(0x00 << FShft (PPCR_CCF))
-#define PPCR_Fx20			/*  Freq. x 20 (fcpu = 20*fxtl)    */ \
-			(0x01 << FShft (PPCR_CCF))
-#define PPCR_Fx24			/*  Freq. x 24 (fcpu = 24*fxtl)    */ \
-			(0x02 << FShft (PPCR_CCF))
-#define PPCR_Fx28			/*  Freq. x 28 (fcpu = 28*fxtl)    */ \
-			(0x03 << FShft (PPCR_CCF))
-#define PPCR_Fx32			/*  Freq. x 32 (fcpu = 32*fxtl)    */ \
-			(0x04 << FShft (PPCR_CCF))
-#define PPCR_Fx36			/*  Freq. x 36 (fcpu = 36*fxtl)    */ \
-			(0x05 << FShft (PPCR_CCF))
-#define PPCR_Fx40			/*  Freq. x 40 (fcpu = 40*fxtl)    */ \
-			(0x06 << FShft (PPCR_CCF))
-#define PPCR_Fx44			/*  Freq. x 44 (fcpu = 44*fxtl)    */ \
-			(0x07 << FShft (PPCR_CCF))
-#define PPCR_Fx48			/*  Freq. x 48 (fcpu = 48*fxtl)    */ \
-			(0x08 << FShft (PPCR_CCF))
-#define PPCR_Fx52			/*  Freq. x 52 (fcpu = 52*fxtl)    */ \
-			(0x09 << FShft (PPCR_CCF))
-#define PPCR_Fx56			/*  Freq. x 56 (fcpu = 56*fxtl)    */ \
-			(0x0A << FShft (PPCR_CCF))
-#define PPCR_Fx60			/*  Freq. x 60 (fcpu = 60*fxtl)    */ \
-			(0x0B << FShft (PPCR_CCF))
-#define PPCR_Fx64			/*  Freq. x 64 (fcpu = 64*fxtl)    */ \
-			(0x0C << FShft (PPCR_CCF))
-#define PPCR_Fx68			/*  Freq. x 68 (fcpu = 68*fxtl)    */ \
-			(0x0D << FShft (PPCR_CCF))
-#define PPCR_Fx72			/*  Freq. x 72 (fcpu = 72*fxtl)    */ \
-			(0x0E << FShft (PPCR_CCF))
-#define PPCR_Fx76			/*  Freq. x 76 (fcpu = 76*fxtl)    */ \
-			(0x0F << FShft (PPCR_CCF))
-					/*  3.6864 MHz crystal (fxtl):	   */
-#define PPCR_F59_0MHz	PPCR_Fx16	/*   Freq. (fcpu) =  59.0 MHz	   */
-#define PPCR_F73_7MHz	PPCR_Fx20	/*   Freq. (fcpu) =  73.7 MHz	   */
-#define PPCR_F88_5MHz	PPCR_Fx24	/*   Freq. (fcpu) =  88.5 MHz	   */
-#define PPCR_F103_2MHz	PPCR_Fx28	/*   Freq. (fcpu) = 103.2 MHz	   */
-#define PPCR_F118_0MHz	PPCR_Fx32	/*   Freq. (fcpu) = 118.0 MHz	   */
-#define PPCR_F132_7MHz	PPCR_Fx36	/*   Freq. (fcpu) = 132.7 MHz	   */
-#define PPCR_F147_5MHz	PPCR_Fx40	/*   Freq. (fcpu) = 147.5 MHz	   */
-#define PPCR_F162_2MHz	PPCR_Fx44	/*   Freq. (fcpu) = 162.2 MHz	   */
-#define PPCR_F176_9MHz	PPCR_Fx48	/*   Freq. (fcpu) = 176.9 MHz	   */
-#define PPCR_F191_7MHz	PPCR_Fx52	/*   Freq. (fcpu) = 191.7 MHz	   */
-#define PPCR_F206_4MHz	PPCR_Fx56	/*   Freq. (fcpu) = 206.4 MHz	   */
-#define PPCR_F221_2MHz	PPCR_Fx60	/*   Freq. (fcpu) = 221.2 MHz	   */
-#define PPCR_F239_6MHz	PPCR_Fx64	/*   Freq. (fcpu) = 239.6 MHz	   */
-#define PPCR_F250_7MHz	PPCR_Fx68	/*   Freq. (fcpu) = 250.7 MHz	   */
-#define PPCR_F265_4MHz	PPCR_Fx72	/*   Freq. (fcpu) = 265.4 MHz	   */
-#define PPCR_F280_2MHz	PPCR_Fx76	/*   Freq. (fcpu) = 280.2 MHz	   */
-					/*  3.5795 MHz crystal (fxtl):	   */
-#define PPCR_F57_3MHz	PPCR_Fx16	/*   Freq. (fcpu) =  57.3 MHz	   */
-#define PPCR_F71_6MHz	PPCR_Fx20	/*   Freq. (fcpu) =  71.6 MHz	   */
-#define PPCR_F85_9MHz	PPCR_Fx24	/*   Freq. (fcpu) =  85.9 MHz	   */
-#define PPCR_F100_2MHz	PPCR_Fx28	/*   Freq. (fcpu) = 100.2 MHz	   */
-#define PPCR_F114_5MHz	PPCR_Fx32	/*   Freq. (fcpu) = 114.5 MHz	   */
-#define PPCR_F128_9MHz	PPCR_Fx36	/*   Freq. (fcpu) = 128.9 MHz	   */
-#define PPCR_F143_2MHz	PPCR_Fx40	/*   Freq. (fcpu) = 143.2 MHz	   */
-#define PPCR_F157_5MHz	PPCR_Fx44	/*   Freq. (fcpu) = 157.5 MHz	   */
-#define PPCR_F171_8MHz	PPCR_Fx48	/*   Freq. (fcpu) = 171.8 MHz	   */
-#define PPCR_F186_1MHz	PPCR_Fx52	/*   Freq. (fcpu) = 186.1 MHz	   */
-#define PPCR_F200_5MHz	PPCR_Fx56	/*   Freq. (fcpu) = 200.5 MHz	   */
-#define PPCR_F214_8MHz	PPCR_Fx60	/*   Freq. (fcpu) = 214.8 MHz	   */
-#define PPCR_F229_1MHz	PPCR_Fx64	/*   Freq. (fcpu) = 229.1 MHz	   */
-#define PPCR_F243_4MHz	PPCR_Fx68	/*   Freq. (fcpu) = 243.4 MHz	   */
-#define PPCR_F257_7MHz	PPCR_Fx72	/*   Freq. (fcpu) = 257.7 MHz	   */
-#define PPCR_F272_0MHz	PPCR_Fx76	/*   Freq. (fcpu) = 272.0 MHz	   */
-
-#define POSR_OOK	0x00000001	/* RTC Oscillator (32.768 kHz) OK  */
-
-
-/*
- * Reset Controller (RC) control registers
- *
- * Registers
- *    RSRR		Reset Controller (RC) Software Reset Register
- *			(read/write).
- *    RCSR		Reset Controller (RC) Status Register (read/write).
- */
-
-#define _RSRR		0x90030000	/* RC Software Reset Reg.	   */
-#define _RCSR		0x90030004	/* RC Status Reg.		   */
-
-#if LANGUAGE == C
-#define RSRR				/* RC Software Reset Reg.	   */ \
-			(*((volatile Word *) io_p2v (_RSRR)))
-#define RCSR				/* RC Status Reg.		   */ \
-			(*((volatile Word *) io_p2v (_RCSR)))
-#endif /* LANGUAGE == C */
-
-#define RSRR_SWR	0x00000001	/* SoftWare Reset (set only)	   */
-
-#define RCSR_HWR	0x00000001	/* HardWare Reset		   */
-#define RCSR_SWR	0x00000002	/* SoftWare Reset		   */
-#define RCSR_WDR	0x00000004	/* Watch-Dog Reset		   */
-#define RCSR_SMR	0x00000008	/* Sleep-Mode Reset		   */
-
-
-/*
- * Test unit control registers
- *
- * Registers
- *    TUCR		Test Unit Control Register (read/write).
- */
-
-#define _TUCR		0x90030008	/* Test Unit Control Reg.	   */
-
-#if LANGUAGE == C
-#define TUCR				/* Test Unit Control Reg.	   */ \
-			(*((volatile Word *) io_p2v (_TUCR)))
-#endif /* LANGUAGE == C */
-
-#define TUCR_TIC	0x00000040	/* TIC mode			   */
-#define TUCR_TTST	0x00000080	/* Trim TeST mode		   */
-#define TUCR_RCRC	0x00000100	/* Richard's Cyclic Redundancy	   */
-					/* Check			   */
-#define TUCR_PMD	0x00000200	/* Power Management Disable	   */
-#define TUCR_MR		0x00000400	/* Memory Request mode		   */
-#define TUCR_NoMB	(TUCR_MR*0)	/*  No Memory Bus request & grant  */
-#define TUCR_MBGPIO	(TUCR_MR*1)	/*  Memory Bus request (MBREQ) &   */
-					/*  grant (MBGNT) on GPIO [22:21]  */
-#define TUCR_CTB	Fld (3, 20)	/* Clock Test Bits		   */
-#define TUCR_FDC	0x00800000	/* RTC Force Delete Count	   */
-#define TUCR_FMC	0x01000000	/* Force Michelle's Control mode   */
-#define TUCR_TMC	0x02000000	/* RTC Trimmer Multiplexer Control */
-#define TUCR_DPS	0x04000000	/* Disallow Pad Sleep		   */
-#define TUCR_TSEL	Fld (3, 29)	/* clock Test SELect on GPIO [27]  */
-#define TUCR_32_768kHz			/*  32.768 kHz osc. on GPIO [27]   */ \
-			(0 << FShft (TUCR_TSEL))
-#define TUCR_3_6864MHz			/*  3.6864 MHz osc. on GPIO [27]   */ \
-			(1 << FShft (TUCR_TSEL))
-#define TUCR_VDD			/*  VDD ring osc./16 on GPIO [27]  */ \
-			(2 << FShft (TUCR_TSEL))
-#define TUCR_96MHzPLL			/*  96 MHz PLL/4 on GPIO [27]	   */ \
-			(3 << FShft (TUCR_TSEL))
-#define TUCR_Clock			/*  internal (fcpu/2) & 32.768 kHz */ \
-					/*  Clocks on GPIO [26:27]	   */ \
-			(4 << FShft (TUCR_TSEL))
-#define TUCR_3_6864MHzA			/*  3.6864 MHz osc. on GPIO [27]   */ \
-					/*  (Alternative)		   */ \
-			(5 << FShft (TUCR_TSEL))
-#define TUCR_MainPLL			/*  Main PLL/16 on GPIO [27]	   */ \
-			(6 << FShft (TUCR_TSEL))
-#define TUCR_VDDL			/*  VDDL ring osc./4 on GPIO [27]  */ \
-			(7 << FShft (TUCR_TSEL))
-
-
-/*
- * General-Purpose Input/Output (GPIO) control registers
- *
- * Registers
- *    GPLR		General-Purpose Input/Output (GPIO) Pin Level
- *			Register (read).
- *    GPDR		General-Purpose Input/Output (GPIO) Pin Direction
- *			Register (read/write).
- *    GPSR		General-Purpose Input/Output (GPIO) Pin output Set
- *			Register (write).
- *    GPCR		General-Purpose Input/Output (GPIO) Pin output Clear
- *			Register (write).
- *    GRER		General-Purpose Input/Output (GPIO) Rising-Edge
- *			detect Register (read/write).
- *    GFER		General-Purpose Input/Output (GPIO) Falling-Edge
- *			detect Register (read/write).
- *    GEDR		General-Purpose Input/Output (GPIO) Edge Detect
- *			status Register (read/write).
- *    GAFR		General-Purpose Input/Output (GPIO) Alternate
- *			Function Register (read/write).
- *
- * Clock
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- */
-
-#define _GPLR		0x90040000	/* GPIO Pin Level Reg.		   */
-#define _GPDR		0x90040004	/* GPIO Pin Direction Reg.	   */
-#define _GPSR		0x90040008	/* GPIO Pin output Set Reg.	   */
-#define _GPCR		0x9004000C	/* GPIO Pin output Clear Reg.	   */
-#define _GRER		0x90040010	/* GPIO Rising-Edge detect Reg.    */
-#define _GFER		0x90040014	/* GPIO Falling-Edge detect Reg.   */
-#define _GEDR		0x90040018	/* GPIO Edge Detect status Reg.    */
-#define _GAFR		0x9004001C	/* GPIO Alternate Function Reg.    */
-
-#if LANGUAGE == C
-#define GPLR				/* GPIO Pin Level Reg.		   */ \
-			(*((volatile Word *) io_p2v (_GPLR)))
-#define GPDR				/* GPIO Pin Direction Reg.	   */ \
-			(*((volatile Word *) io_p2v (_GPDR)))
-#define GPSR				/* GPIO Pin output Set Reg.	   */ \
-			(*((volatile Word *) io_p2v (_GPSR)))
-#define GPCR				/* GPIO Pin output Clear Reg.	   */ \
-			(*((volatile Word *) io_p2v (_GPCR)))
-#define GRER				/* GPIO Rising-Edge detect Reg.    */ \
-			(*((volatile Word *) io_p2v (_GRER)))
-#define GFER				/* GPIO Falling-Edge detect Reg.   */ \
-			(*((volatile Word *) io_p2v (_GFER)))
-#define GEDR				/* GPIO Edge Detect status Reg.    */ \
-			(*((volatile Word *) io_p2v (_GEDR)))
-#define GAFR				/* GPIO Alternate Function Reg.    */ \
-			(*((volatile Word *) io_p2v (_GAFR)))
-#elif LANGUAGE == Assembly
-
-#define GPLR  (io_p2v (_GPLR))
-#define GPDR  (io_p2v (_GPDR))
-#define GPSR  (io_p2v (_GPSR))
-#define GPCR  (io_p2v (_GPCR))
-#define GRER  (io_p2v (_GRER))
-#define GFER  (io_p2v (_GFER))
-#define GEDR  (io_p2v (_GEDR))
-#define GAFR  (io_p2v (_GAFR))
-
-#endif /* LANGUAGE == C */
-
-#define GPIO_MIN	(0)
-#define GPIO_MAX	(27)
-
-#define GPIO_GPIO(Nb)			/* GPIO [0..27]			   */ \
-			(0x00000001 << (Nb))
-#define GPIO_GPIO0	GPIO_GPIO (0)	/* GPIO  [0]			   */
-#define GPIO_GPIO1	GPIO_GPIO (1)	/* GPIO  [1]			   */
-#define GPIO_GPIO2	GPIO_GPIO (2)	/* GPIO  [2]			   */
-#define GPIO_GPIO3	GPIO_GPIO (3)	/* GPIO  [3]			   */
-#define GPIO_GPIO4	GPIO_GPIO (4)	/* GPIO  [4]			   */
-#define GPIO_GPIO5	GPIO_GPIO (5)	/* GPIO  [5]			   */
-#define GPIO_GPIO6	GPIO_GPIO (6)	/* GPIO  [6]			   */
-#define GPIO_GPIO7	GPIO_GPIO (7)	/* GPIO  [7]			   */
-#define GPIO_GPIO8	GPIO_GPIO (8)	/* GPIO  [8]			   */
-#define GPIO_GPIO9	GPIO_GPIO (9)	/* GPIO  [9]			   */
-#define GPIO_GPIO10	GPIO_GPIO (10)	/* GPIO [10]			   */
-#define GPIO_GPIO11	GPIO_GPIO (11)	/* GPIO [11]			   */
-#define GPIO_GPIO12	GPIO_GPIO (12)	/* GPIO [12]			   */
-#define GPIO_GPIO13	GPIO_GPIO (13)	/* GPIO [13]			   */
-#define GPIO_GPIO14	GPIO_GPIO (14)	/* GPIO [14]			   */
-#define GPIO_GPIO15	GPIO_GPIO (15)	/* GPIO [15]			   */
-#define GPIO_GPIO16	GPIO_GPIO (16)	/* GPIO [16]			   */
-#define GPIO_GPIO17	GPIO_GPIO (17)	/* GPIO [17]			   */
-#define GPIO_GPIO18	GPIO_GPIO (18)	/* GPIO [18]			   */
-#define GPIO_GPIO19	GPIO_GPIO (19)	/* GPIO [19]			   */
-#define GPIO_GPIO20	GPIO_GPIO (20)	/* GPIO [20]			   */
-#define GPIO_GPIO21	GPIO_GPIO (21)	/* GPIO [21]			   */
-#define GPIO_GPIO22	GPIO_GPIO (22)	/* GPIO [22]			   */
-#define GPIO_GPIO23	GPIO_GPIO (23)	/* GPIO [23]			   */
-#define GPIO_GPIO24	GPIO_GPIO (24)	/* GPIO [24]			   */
-#define GPIO_GPIO25	GPIO_GPIO (25)	/* GPIO [25]			   */
-#define GPIO_GPIO26	GPIO_GPIO (26)	/* GPIO [26]			   */
-#define GPIO_GPIO27	GPIO_GPIO (27)	/* GPIO [27]			   */
-
-#define GPIO_LDD(Nb)			/* LCD Data [8..15] (O)		   */ \
-			GPIO_GPIO ((Nb) - 6)
-#define GPIO_LDD8	GPIO_LDD (8)	/* LCD Data  [8] (O)		   */
-#define GPIO_LDD9	GPIO_LDD (9)	/* LCD Data  [9] (O)		   */
-#define GPIO_LDD10	GPIO_LDD (10)	/* LCD Data [10] (O)		   */
-#define GPIO_LDD11	GPIO_LDD (11)	/* LCD Data [11] (O)		   */
-#define GPIO_LDD12	GPIO_LDD (12)	/* LCD Data [12] (O)		   */
-#define GPIO_LDD13	GPIO_LDD (13)	/* LCD Data [13] (O)		   */
-#define GPIO_LDD14	GPIO_LDD (14)	/* LCD Data [14] (O)		   */
-#define GPIO_LDD15	GPIO_LDD (15)	/* LCD Data [15] (O)		   */
-					/* ser. port 4:			   */
-#define GPIO_SSP_TXD	GPIO_GPIO (10)	/*  SSP Transmit Data (O)	   */
-#define GPIO_SSP_RXD	GPIO_GPIO (11)	/*  SSP Receive Data (I)	   */
-#define GPIO_SSP_SCLK	GPIO_GPIO (12)	/*  SSP Sample CLocK (O)	   */
-#define GPIO_SSP_SFRM	GPIO_GPIO (13)	/*  SSP Sample FRaMe (O)	   */
-					/* ser. port 1:			   */
-#define GPIO_UART_TXD	GPIO_GPIO (14)	/*  UART Transmit Data (O)	   */
-#define GPIO_UART_RXD	GPIO_GPIO (15)	/*  UART Receive Data (I)	   */
-#define GPIO_SDLC_SCLK	GPIO_GPIO (16)	/*  SDLC Sample CLocK (I/O)	   */
-#define GPIO_SDLC_AAF	GPIO_GPIO (17)	/*  SDLC Abort After Frame (O)	   */
-#define GPIO_UART_SCLK1	GPIO_GPIO (18)	/*  UART Sample CLocK 1 (I)	   */
-					/* ser. port 4:			   */
-#define GPIO_SSP_CLK	GPIO_GPIO (19)	/*  SSP external CLocK (I)	   */
-					/* ser. port 3:			   */
-#define GPIO_UART_SCLK3	GPIO_GPIO (20)	/*  UART Sample CLocK 3 (I)	   */
-					/* ser. port 4:			   */
-#define GPIO_MCP_CLK	GPIO_GPIO (21)	/*  MCP CLocK (I)		   */
-					/* test controller:		   */
-#define GPIO_TIC_ACK	GPIO_GPIO (21)	/*  TIC ACKnowledge (O)		   */
-#define GPIO_MBGNT	GPIO_GPIO (21)	/*  Memory Bus GraNT (O)	   */
-#define GPIO_TREQA	GPIO_GPIO (22)	/*  TIC REQuest A (I)		   */
-#define GPIO_MBREQ	GPIO_GPIO (22)	/*  Memory Bus REQuest (I)	   */
-#define GPIO_TREQB	GPIO_GPIO (23)	/*  TIC REQuest B (I)		   */
-#define GPIO_1Hz	GPIO_GPIO (25)	/* 1 Hz clock (O)		   */
-#define GPIO_RCLK	GPIO_GPIO (26)	/* internal (R) CLocK (O, fcpu/2)  */
-#define GPIO_32_768kHz	GPIO_GPIO (27)	/* 32.768 kHz clock (O, RTC)	   */
-
-#define GPDR_In		0		/* Input			   */
-#define GPDR_Out	1		/* Output			   */
-
-
-/*
- * Interrupt Controller (IC) control registers
- *
- * Registers
- *    ICIP		Interrupt Controller (IC) Interrupt ReQuest (IRQ)
- *			Pending register (read).
- *    ICMR		Interrupt Controller (IC) Mask Register (read/write).
- *    ICLR		Interrupt Controller (IC) Level Register (read/write).
- *    ICCR		Interrupt Controller (IC) Control Register
- *			(read/write).
- *			[The ICCR register is only implemented in versions 2.0
- *			(rev. = 8) and higher of the StrongARM SA-1100.]
- *    ICFP		Interrupt Controller (IC) Fast Interrupt reQuest
- *			(FIQ) Pending register (read).
- *    ICPR		Interrupt Controller (IC) Pending Register (read).
- *			[The ICPR register is active low (inverted) in
- *			versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
- *			StrongARM SA-1100, it is active high (non-inverted) in
- *			versions 2.0 (rev. = 8) and higher.]
- */
-
-#define _ICIP		0x90050000	/* IC IRQ Pending reg.		   */
-#define _ICMR		0x90050004	/* IC Mask Reg.			   */
-#define _ICLR		0x90050008	/* IC Level Reg.		   */
-#define _ICCR		0x9005000C	/* IC Control Reg.		   */
-#define _ICFP		0x90050010	/* IC FIQ Pending reg.		   */
-#define _ICPR		0x90050020	/* IC Pending Reg.		   */
-
-#if LANGUAGE == C
-#define ICIP				/* IC IRQ Pending reg.		   */ \
-			(*((volatile Word *) io_p2v (_ICIP)))
-#define ICMR				/* IC Mask Reg.			   */ \
-			(*((volatile Word *) io_p2v (_ICMR)))
-#define ICLR				/* IC Level Reg.		   */ \
-			(*((volatile Word *) io_p2v (_ICLR)))
-#define ICCR				/* IC Control Reg.		   */ \
-			(*((volatile Word *) io_p2v (_ICCR)))
-#define ICFP				/* IC FIQ Pending reg.		   */ \
-			(*((volatile Word *) io_p2v (_ICFP)))
-#define ICPR				/* IC Pending Reg.		   */ \
-			(*((volatile Word *) io_p2v (_ICPR)))
-#endif /* LANGUAGE == C */
-
-#define IC_GPIO(Nb)			/* GPIO [0..10]			   */ \
-			(0x00000001 << (Nb))
-#define IC_GPIO0	IC_GPIO (0)	/* GPIO  [0]			   */
-#define IC_GPIO1	IC_GPIO (1)	/* GPIO  [1]			   */
-#define IC_GPIO2	IC_GPIO (2)	/* GPIO  [2]			   */
-#define IC_GPIO3	IC_GPIO (3)	/* GPIO  [3]			   */
-#define IC_GPIO4	IC_GPIO (4)	/* GPIO  [4]			   */
-#define IC_GPIO5	IC_GPIO (5)	/* GPIO  [5]			   */
-#define IC_GPIO6	IC_GPIO (6)	/* GPIO  [6]			   */
-#define IC_GPIO7	IC_GPIO (7)	/* GPIO  [7]			   */
-#define IC_GPIO8	IC_GPIO (8)	/* GPIO  [8]			   */
-#define IC_GPIO9	IC_GPIO (9)	/* GPIO  [9]			   */
-#define IC_GPIO10	IC_GPIO (10)	/* GPIO [10]			   */
-#define IC_GPIO11_27	0x00000800	/* GPIO [11:27] (ORed)		   */
-#define IC_LCD		0x00001000	/* LCD controller		   */
-#define IC_Ser0UDC	0x00002000	/* Ser. port 0 UDC		   */
-#define IC_Ser1SDLC	0x00004000	/* Ser. port 1 SDLC		   */
-#define IC_Ser1UART	0x00008000	/* Ser. port 1 UART		   */
-#define IC_Ser2ICP	0x00010000	/* Ser. port 2 ICP		   */
-#define IC_Ser3UART	0x00020000	/* Ser. port 3 UART		   */
-#define IC_Ser4MCP	0x00040000	/* Ser. port 4 MCP		   */
-#define IC_Ser4SSP	0x00080000	/* Ser. port 4 SSP		   */
-#define IC_DMA(Nb)			/* DMA controller channel [0..5]   */ \
-			(0x00100000 << (Nb))
-#define IC_DMA0		IC_DMA (0)	/* DMA controller channel 0	   */
-#define IC_DMA1		IC_DMA (1)	/* DMA controller channel 1	   */
-#define IC_DMA2		IC_DMA (2)	/* DMA controller channel 2	   */
-#define IC_DMA3		IC_DMA (3)	/* DMA controller channel 3	   */
-#define IC_DMA4		IC_DMA (4)	/* DMA controller channel 4	   */
-#define IC_DMA5		IC_DMA (5)	/* DMA controller channel 5	   */
-#define IC_OST(Nb)			/* OS Timer match [0..3]	   */ \
-			(0x04000000 << (Nb))
-#define IC_OST0		IC_OST (0)	/* OS Timer match 0		   */
-#define IC_OST1		IC_OST (1)	/* OS Timer match 1		   */
-#define IC_OST2		IC_OST (2)	/* OS Timer match 2		   */
-#define IC_OST3		IC_OST (3)	/* OS Timer match 3		   */
-#define IC_RTC1Hz	0x40000000	/* RTC 1 Hz clock		   */
-#define IC_RTCAlrm	0x80000000	/* RTC Alarm			   */
-
-#define ICLR_IRQ	0		/* Interrupt ReQuest		   */
-#define ICLR_FIQ	1		/* Fast Interrupt reQuest	   */
-
-#define ICCR_DIM	0x00000001	/* Disable Idle-mode interrupt	   */
-					/* Mask				   */
-#define ICCR_IdleAllInt	(ICCR_DIM*0)	/*  Idle-mode All Interrupt enable */
-					/*  (ICMR ignored)		   */
-#define ICCR_IdleMskInt	(ICCR_DIM*1)	/*  Idle-mode non-Masked Interrupt */
-					/*  enable (ICMR used)		   */
-
-
-/*
- * Peripheral Pin Controller (PPC) control registers
- *
- * Registers
- *    PPDR		Peripheral Pin Controller (PPC) Pin Direction
- *			Register (read/write).
- *    PPSR		Peripheral Pin Controller (PPC) Pin State Register
- *			(read/write).
- *    PPAR		Peripheral Pin Controller (PPC) Pin Assignment
- *			Register (read/write).
- *    PSDR		Peripheral Pin Controller (PPC) Sleep-mode pin
- *			Direction Register (read/write).
- *    PPFR		Peripheral Pin Controller (PPC) Pin Flag Register
- *			(read).
- */
-
-#define _PPDR		0x90060000	/* PPC Pin Direction Reg.	   */
-#define _PPSR		0x90060004	/* PPC Pin State Reg.		   */
-#define _PPAR		0x90060008	/* PPC Pin Assignment Reg.	   */
-#define _PSDR		0x9006000C	/* PPC Sleep-mode pin Direction    */
-					/* Reg.				   */
-#define _PPFR		0x90060010	/* PPC Pin Flag Reg.		   */
-
-#if LANGUAGE == C
-#define PPDR				/* PPC Pin Direction Reg.	   */ \
-			(*((volatile Word *) io_p2v (_PPDR)))
-#define PPSR				/* PPC Pin State Reg.		   */ \
-			(*((volatile Word *) io_p2v (_PPSR)))
-#define PPAR				/* PPC Pin Assignment Reg.	   */ \
-			(*((volatile Word *) io_p2v (_PPAR)))
-#define PSDR				/* PPC Sleep-mode pin Direction    */ \
-					/* Reg.				   */ \
-			(*((volatile Word *) io_p2v (_PSDR)))
-#define PPFR				/* PPC Pin Flag Reg.		   */ \
-			(*((volatile Word *) io_p2v (_PPFR)))
-#endif /* LANGUAGE == C */
-
-#define PPC_LDD(Nb)			/* LCD Data [0..7]		   */ \
-			(0x00000001 << (Nb))
-#define PPC_LDD0	PPC_LDD (0)	/* LCD Data [0]			   */
-#define PPC_LDD1	PPC_LDD (1)	/* LCD Data [1]			   */
-#define PPC_LDD2	PPC_LDD (2)	/* LCD Data [2]			   */
-#define PPC_LDD3	PPC_LDD (3)	/* LCD Data [3]			   */
-#define PPC_LDD4	PPC_LDD (4)	/* LCD Data [4]			   */
-#define PPC_LDD5	PPC_LDD (5)	/* LCD Data [5]			   */
-#define PPC_LDD6	PPC_LDD (6)	/* LCD Data [6]			   */
-#define PPC_LDD7	PPC_LDD (7)	/* LCD Data [7]			   */
-#define PPC_L_PCLK	0x00000100	/* LCD Pixel CLocK		   */
-#define PPC_L_LCLK	0x00000200	/* LCD Line CLocK		   */
-#define PPC_L_FCLK	0x00000400	/* LCD Frame CLocK		   */
-#define PPC_L_BIAS	0x00000800	/* LCD AC BIAS			   */
-					/* ser. port 1:			   */
-#define PPC_TXD1	0x00001000	/*  SDLC/UART Transmit Data 1	   */
-#define PPC_RXD1	0x00002000	/*  SDLC/UART Receive Data 1	   */
-					/* ser. port 2:			   */
-#define PPC_TXD2	0x00004000	/*  IPC Transmit Data 2		   */
-#define PPC_RXD2	0x00008000	/*  IPC Receive Data 2		   */
-					/* ser. port 3:			   */
-#define PPC_TXD3	0x00010000	/*  UART Transmit Data 3	   */
-#define PPC_RXD3	0x00020000	/*  UART Receive Data 3		   */
-					/* ser. port 4:			   */
-#define PPC_TXD4	0x00040000	/*  MCP/SSP Transmit Data 4	   */
-#define PPC_RXD4	0x00080000	/*  MCP/SSP Receive Data 4	   */
-#define PPC_SCLK	0x00100000	/*  MCP/SSP Sample CLocK	   */
-#define PPC_SFRM	0x00200000	/*  MCP/SSP Sample FRaMe	   */
-
-#define PPDR_In		0		/* Input			   */
-#define PPDR_Out	1		/* Output			   */
-
-					/* ser. port 1:			   */
-#define PPAR_UPR	0x00001000	/*  UART Pin Reassignment	   */
-#define PPAR_UARTTR	(PPAR_UPR*0)	/*   UART on TXD_1 & RXD_1	   */
-#define PPAR_UARTGPIO	(PPAR_UPR*1)	/*   UART on GPIO [14:15]	   */
-					/* ser. port 4:			   */
-#define PPAR_SPR	0x00040000	/*  SSP Pin Reassignment	   */
-#define PPAR_SSPTRSS	(PPAR_SPR*0)	/*   SSP on TXD_C, RXD_C, SCLK_C,  */
-					/*   & SFRM_C			   */
-#define PPAR_SSPGPIO	(PPAR_SPR*1)	/*   SSP on GPIO [10:13]	   */
-
-#define PSDR_OutL	0		/* Output Low in sleep mode	   */
-#define PSDR_Flt	1		/* Floating (input) in sleep mode  */
-
-#define PPFR_LCD	0x00000001	/* LCD controller		   */
-#define PPFR_SP1TX	0x00001000	/* Ser. Port 1 SDLC/UART Transmit  */
-#define PPFR_SP1RX	0x00002000	/* Ser. Port 1 SDLC/UART Receive   */
-#define PPFR_SP2TX	0x00004000	/* Ser. Port 2 ICP Transmit	   */
-#define PPFR_SP2RX	0x00008000	/* Ser. Port 2 ICP Receive	   */
-#define PPFR_SP3TX	0x00010000	/* Ser. Port 3 UART Transmit	   */
-#define PPFR_SP3RX	0x00020000	/* Ser. Port 3 UART Receive	   */
-#define PPFR_SP4	0x00040000	/* Ser. Port 4 MCP/SSP		   */
-#define PPFR_PerEn	0		/* Peripheral Enabled		   */
-#define PPFR_PPCEn	1		/* PPC Enabled			   */
-
-
-/*
- * Dynamic Random-Access Memory (DRAM) control registers
- *
- * Registers
- *    MDCNFG		Memory system: Dynamic Random-Access Memory (DRAM)
- *			CoNFiGuration register (read/write).
- *    MDCAS0		Memory system: Dynamic Random-Access Memory (DRAM)
- *			Column Address Strobe (CAS) shift register 0
- *			(read/write).
- *    MDCAS1		Memory system: Dynamic Random-Access Memory (DRAM)
- *			Column Address Strobe (CAS) shift register 1
- *			(read/write).
- *    MDCAS2		Memory system: Dynamic Random-Access Memory (DRAM)
- *			Column Address Strobe (CAS) shift register 2
- *			(read/write).
- *
- * Clocks
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
- *    fcas, Tcas	Frequency, period of the DRAM CAS shift registers.
- */
-
-					/* Memory system:		   */
-#define _MDCNFG		0xA0000000	/*  DRAM CoNFiGuration reg.	   */
-#define _MDCAS(Nb)			/*  DRAM CAS shift reg. [0..3]	   */ \
-			(0xA0000004 + (Nb)*4)
-#define _MDCAS0		_MDCAS (0)	/*  DRAM CAS shift reg. 0	   */
-#define _MDCAS1		_MDCAS (1)	/*  DRAM CAS shift reg. 1	   */
-#define _MDCAS2		_MDCAS (2)	/*  DRAM CAS shift reg. 2	   */
-
-#if LANGUAGE == C
-					/* Memory system:		   */
-#define MDCNFG				/*  DRAM CoNFiGuration reg.	   */ \
-			(*((volatile Word *) io_p2v (_MDCNFG)))
-#define MDCAS				/*  DRAM CAS shift reg. [0..3]	   */ \
-			((volatile Word *) io_p2v (_MDCAS (0)))
-#define MDCAS0		(MDCAS [0])	/*  DRAM CAS shift reg. 0	   */
-#define MDCAS1		(MDCAS [1])	/*  DRAM CAS shift reg. 1	   */
-#define MDCAS2		(MDCAS [2])	/*  DRAM CAS shift reg. 2	   */
-
-#elif LANGUAGE == Assembly
-
-#define MDCNFG		(io_p2v(_MDCNFG))
-
-#endif /* LANGUAGE == C */
-
-/* SA1100 MDCNFG values */
-#define MDCNFG_DE(Nb)			/* DRAM Enable bank [0..3]	   */ \
-			(0x00000001 << (Nb))
-#define MDCNFG_DE0	MDCNFG_DE (0)	/* DRAM Enable bank 0		   */
-#define MDCNFG_DE1	MDCNFG_DE (1)	/* DRAM Enable bank 1		   */
-#define MDCNFG_DE2	MDCNFG_DE (2)	/* DRAM Enable bank 2		   */
-#define MDCNFG_DE3	MDCNFG_DE (3)	/* DRAM Enable bank 3		   */
-#define MDCNFG_DRAC	Fld (2, 4)	/* DRAM Row Address Count - 9	   */
-#define MDCNFG_RowAdd(Add)		/*  Row Address count [9..12]	   */ \
-			(((Add) - 9) << FShft (MDCNFG_DRAC))
-#define MDCNFG_CDB2	0x00000040	/* shift reg. Clock Divide By 2    */
-					/* (fcas = fcpu/2)		   */
-#define MDCNFG_TRP	Fld (4, 7)	/* Time RAS Pre-charge - 1 [Tmem]  */
-#define MDCNFG_PrChrg(Tcpu)		/*  Pre-Charge time [2..32 Tcpu]   */ \
-			(((Tcpu) - 2)/2 << FShft (MDCNFG_TRP))
-#define MDCNFG_CeilPrChrg(Tcpu)		/*  Ceil. of PrChrg [2..32 Tcpu]   */ \
-			(((Tcpu) - 1)/2 << FShft (MDCNFG_TRP))
-#define MDCNFG_TRASR	Fld (4, 11)	/* Time RAS Refresh - 1 [Tmem]	   */
-#define MDCNFG_Ref(Tcpu)		/*  Refresh time [2..32 Tcpu]	   */ \
-			(((Tcpu) - 2)/2 << FShft (MDCNFG_TRASR))
-#define MDCNFG_CeilRef(Tcpu)		/*  Ceil. of Ref [2..32 Tcpu]	   */ \
-			(((Tcpu) - 1)/2 << FShft (MDCNFG_TRASR))
-#define MDCNFG_TDL	Fld (2, 15)	/* Time Data Latch [Tcpu]	   */
-#define MDCNFG_DataLtch(Tcpu)		/*  Data Latch delay [0..3 Tcpu]   */ \
-			((Tcpu) << FShft (MDCNFG_TDL))
-#define MDCNFG_DRI	Fld (15, 17)	/* min. DRAM Refresh Interval/4    */
-					/* [Tmem]			   */
-#define MDCNFG_RefInt(Tcpu)		/*  min. Refresh Interval	   */ \
-					/*  [0..262136 Tcpu]		   */ \
-			((Tcpu)/8 << FShft (MDCNFG_DRI))
-
-/* SA1110 MDCNFG values */
-#define MDCNFG_SA1110_DE0	0x00000001	/* DRAM Enable bank 0	     */
-#define MDCNFG_SA1110_DE1	0x00000002	/* DRAM Enable bank 1	     */
-#define MDCNFG_SA1110_DTIM0	0x00000004	/* DRAM timing type 0/1      */
-#define MDCNFG_SA1110_DWID0	0x00000008	/* DRAM bus width 0/1	     */
-#define MDCNFG_SA1110_DRAC0	Fld(3, 4)	/* DRAM row addr bit count   */
-						/* bank 0/1		     */
-#define MDCNFG_SA1110_CDB20	0x00000080	/* Mem Clock divide by 2 0/1 */
-#define MDCNFG_SA1110_TRP0	Fld(3, 8)	/* RAS precharge 0/1	     */
-#define MDCNFG_SA1110_TDL0	Fld(2, 12)	/* Data input latch after CAS*/
-						/* deassertion 0/1	     */
-#define MDCNFG_SA1110_TWR0	Fld(2, 14)	/* SDRAM write recovery 0/1  */
-#define MDCNFG_SA1110_DE2	0x00010000	/* DRAM Enable bank 0	     */
-#define MDCNFG_SA1110_DE3	0x00020000	/* DRAM Enable bank 1	     */
-#define MDCNFG_SA1110_DTIM2	0x00040000	/* DRAM timing type 0/1      */
-#define MDCNFG_SA1110_DWID2	0x00080000	/* DRAM bus width 0/1	     */
-#define MDCNFG_SA1110_DRAC2	Fld(3, 20)	/* DRAM row addr bit count   */
-						/* bank 0/1		     */
-#define MDCNFG_SA1110_CDB22	0x00800000	/* Mem Clock divide by 2 0/1 */
-#define MDCNFG_SA1110_TRP2	Fld(3, 24)	/* RAS precharge 0/1	     */
-#define MDCNFG_SA1110_TDL2	Fld(2, 28)	/* Data input latch after CAS*/
-						/* deassertion 0/1	     */
-#define MDCNFG_SA1110_TWR2	Fld(2, 30)	/* SDRAM write recovery 0/1  */
-
-
-/*
- * Static memory control registers
- *
- * Registers
- *    MSC0		Memory system: Static memory Control register 0
- *			(read/write).
- *    MSC1		Memory system: Static memory Control register 1
- *			(read/write).
- *
- * Clocks
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
- */
-
-					/* Memory system:		   */
-#define _MSC(Nb)			/*  Static memory Control reg.	   */ \
-					/*  [0..1]			   */ \
-			(0xA0000010 + (Nb)*4)
-#define _MSC0		_MSC (0)	/*  Static memory Control reg. 0   */
-#define _MSC1		_MSC (1)	/*  Static memory Control reg. 1   */
-#define _MSC2		0xA000002C	/*  Static memory Control reg. 2, not contiguous   */
-
-#if LANGUAGE == C
-					/* Memory system:		   */
-#define MSC				/*  Static memory Control reg.	   */ \
-					/*  [0..1]			   */ \
-			((volatile Word *) io_p2v (_MSC (0)))
-#define MSC0		(MSC [0])	/*  Static memory Control reg. 0   */
-#define MSC1		(MSC [1])	/*  Static memory Control reg. 1   */
-#define MSC2		(*(volatile Word *) io_p2v (_MSC2))	/*  Static memory Control reg. 2   */
-
-#elif LANGUAGE == Assembly
-
-#define MSC0		io_p2v(0xa0000010)
-#define MSC1		io_p2v(0xa0000014)
-#define MSC2		io_p2v(0xa000002c)
-
-#endif /* LANGUAGE == C */
-
-#define MSC_Bnk(Nb)			/* static memory Bank [0..3]	   */ \
-			Fld (16, ((Nb) Modulo 2)*16)
-#define MSC0_Bnk0	MSC_Bnk (0)	/* static memory Bank 0		   */
-#define MSC0_Bnk1	MSC_Bnk (1)	/* static memory Bank 1		   */
-#define MSC1_Bnk2	MSC_Bnk (2)	/* static memory Bank 2		   */
-#define MSC1_Bnk3	MSC_Bnk (3)	/* static memory Bank 3		   */
-
-#define MSC_RT		Fld (2, 0)	/* ROM/static memory Type	   */
-#define MSC_NonBrst			/*  Non-Burst static memory	   */ \
-			(0 << FShft (MSC_RT))
-#define MSC_SRAM			/*  32-bit byte-writable SRAM	   */ \
-			(1 << FShft (MSC_RT))
-#define MSC_Brst4			/*  Burst-of-4 static memory	   */ \
-			(2 << FShft (MSC_RT))
-#define MSC_Brst8			/*  Burst-of-8 static memory	   */ \
-			(3 << FShft (MSC_RT))
-#define MSC_RBW		0x0004		/* ROM/static memory Bus Width	   */
-#define MSC_32BitStMem	(MSC_RBW*0)	/*  32-Bit Static Memory	   */
-#define MSC_16BitStMem	(MSC_RBW*1)	/*  16-Bit Static Memory	   */
-#define MSC_RDF		Fld (5, 3)	/* ROM/static memory read Delay    */
-					/* First access - 1(.5) [Tmem]	   */
-#define MSC_1stRdAcc(Tcpu)		/*  1st Read Access time (burst    */ \
-					/*  static memory) [3..65 Tcpu]    */ \
-			((((Tcpu) - 3)/2) << FShft (MSC_RDF))
-#define MSC_Ceil1stRdAcc(Tcpu)		/*  Ceil. of 1stRdAcc [3..65 Tcpu] */ \
-			((((Tcpu) - 2)/2) << FShft (MSC_RDF))
-#define MSC_RdAcc(Tcpu)			/*  Read Access time (non-burst    */ \
-					/*  static memory) [2..64 Tcpu]    */ \
-			((((Tcpu) - 2)/2) << FShft (MSC_RDF))
-#define MSC_CeilRdAcc(Tcpu)		/*  Ceil. of RdAcc [2..64 Tcpu]    */ \
-			((((Tcpu) - 1)/2) << FShft (MSC_RDF))
-#define MSC_RDN		Fld (5, 8)	/* ROM/static memory read Delay    */
-					/* Next access - 1 [Tmem]	   */
-#define MSC_NxtRdAcc(Tcpu)		/*  Next Read Access time (burst   */ \
-					/*  static memory) [2..64 Tcpu]    */ \
-			((((Tcpu) - 2)/2) << FShft (MSC_RDN))
-#define MSC_CeilNxtRdAcc(Tcpu)		/*  Ceil. of NxtRdAcc [2..64 Tcpu] */ \
-			((((Tcpu) - 1)/2) << FShft (MSC_RDN))
-#define MSC_WrAcc(Tcpu)			/*  Write Access time (non-burst   */ \
-					/*  static memory) [2..64 Tcpu]    */ \
-			((((Tcpu) - 2)/2) << FShft (MSC_RDN))
-#define MSC_CeilWrAcc(Tcpu)		/*  Ceil. of WrAcc [2..64 Tcpu]    */ \
-			((((Tcpu) - 1)/2) << FShft (MSC_RDN))
-#define MSC_RRR		Fld (3, 13)	/* ROM/static memory RecoveRy	   */
-					/* time/2 [Tmem]		   */
-#define MSC_Rec(Tcpu)			/*  Recovery time [0..28 Tcpu]	   */ \
-			(((Tcpu)/4) << FShft (MSC_RRR))
-#define MSC_CeilRec(Tcpu)		/*  Ceil. of Rec [0..28 Tcpu]	   */ \
-			((((Tcpu) + 3)/4) << FShft (MSC_RRR))
-
-
-/*
- * Personal Computer Memory Card International Association (PCMCIA) control
- * register
- *
- * Register
- *    MECR		Memory system: Expansion memory bus (PCMCIA)
- *			Configuration Register (read/write).
- *
- * Clocks
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
- *    fbclk, Tbclk	Frequency, period of the PCMCIA clock (BCLK).
- */
-
-					/* Memory system:		   */
-#define _MECR		0xA0000018	/*  Expansion memory bus (PCMCIA)  */
-					/*  Configuration Reg.		   */
-
-#if LANGUAGE == C
-					/* Memory system:		   */
-#define MECR				/*  Expansion memory bus (PCMCIA)  */ \
-					/*  Configuration Reg.		   */ \
-			(*((volatile Word *) io_p2v (_MECR)))
-#endif /* LANGUAGE == C */
-
-#define MECR_PCMCIA(Nb)			/* PCMCIA [0..1]		   */ \
-			Fld (15, (Nb)*16)
-#define MECR_PCMCIA0	MECR_PCMCIA (0)	/* PCMCIA 0			   */
-#define MECR_PCMCIA1	MECR_PCMCIA (1)	/* PCMCIA 1			   */
-
-#define MECR_BSIO	Fld (5, 0)	/* BCLK Select I/O - 1 [Tmem]	   */
-#define MECR_IOClk(Tcpu)		/*  I/O Clock [2..64 Tcpu]	   */ \
-			((((Tcpu) - 2)/2) << FShft (MECR_BSIO))
-#define MECR_CeilIOClk(Tcpu)		/*  Ceil. of IOClk [2..64 Tcpu]    */ \
-			((((Tcpu) - 1)/2) << FShft (MECR_BSIO))
-#define MECR_BSA	Fld (5, 5)	/* BCLK Select Attribute - 1	   */
-					/* [Tmem]			   */
-#define MECR_AttrClk(Tcpu)		/*  Attribute Clock [2..64 Tcpu]   */ \
-			((((Tcpu) - 2)/2) << FShft (MECR_BSA))
-#define MECR_CeilAttrClk(Tcpu)		/*  Ceil. of AttrClk [2..64 Tcpu]  */ \
-			((((Tcpu) - 1)/2) << FShft (MECR_BSA))
-#define MECR_BSM	Fld (5, 10)	/* BCLK Select Memory - 1 [Tmem]   */
-#define MECR_MemClk(Tcpu)		/*  Memory Clock [2..64 Tcpu]	   */ \
-			((((Tcpu) - 2)/2) << FShft (MECR_BSM))
-#define MECR_CeilMemClk(Tcpu)		/*  Ceil. of MemClk [2..64 Tcpu]   */ \
-			((((Tcpu) - 1)/2) << FShft (MECR_BSM))
-
-/*
- * On SA1110 only
- */
-
-#define _MDREFR		0xA000001C
-
-#if LANGUAGE == C
-					/* Memory system:		   */
-#define MDREFR \
-			(*((volatile Word *) io_p2v (_MDREFR)))
-
-#elif LANGUAGE == Assembly
-
-#define MDREFR		(io_p2v(_MDREFR))
-
-#endif /* LANGUAGE == C */
-
-#define MDREFR_TRASR		Fld (4, 0)
-#define MDREFR_DRI		Fld (12, 4)
-#define MDREFR_E0PIN		(1 << 16)
-#define MDREFR_K0RUN		(1 << 17)
-#define MDREFR_K0DB2		(1 << 18)
-#define MDREFR_E1PIN		(1 << 20)
-#define MDREFR_K1RUN		(1 << 21)
-#define MDREFR_K1DB2		(1 << 22)
-#define MDREFR_K2RUN		(1 << 25)
-#define MDREFR_K2DB2		(1 << 26)
-#define MDREFR_EAPD		(1 << 28)
-#define MDREFR_KAPD		(1 << 29)
-#define MDREFR_SLFRSH		(1 << 31)
-
-
-/*
- * Direct Memory Access (DMA) control registers
- *
- * Registers
- *    DDAR0		Direct Memory Access (DMA) Device Address Register
- *			channel 0 (read/write).
- *    DCSR0		Direct Memory Access (DMA) Control and Status
- *			Register channel 0 (read/write).
- *    DBSA0		Direct Memory Access (DMA) Buffer Start address
- *			register A channel 0 (read/write).
- *    DBTA0		Direct Memory Access (DMA) Buffer Transfer count
- *			register A channel 0 (read/write).
- *    DBSB0		Direct Memory Access (DMA) Buffer Start address
- *			register B channel 0 (read/write).
- *    DBTB0		Direct Memory Access (DMA) Buffer Transfer count
- *			register B channel 0 (read/write).
- *
- *    DDAR1		Direct Memory Access (DMA) Device Address Register
- *			channel 1 (read/write).
- *    DCSR1		Direct Memory Access (DMA) Control and Status
- *			Register channel 1 (read/write).
- *    DBSA1		Direct Memory Access (DMA) Buffer Start address
- *			register A channel 1 (read/write).
- *    DBTA1		Direct Memory Access (DMA) Buffer Transfer count
- *			register A channel 1 (read/write).
- *    DBSB1		Direct Memory Access (DMA) Buffer Start address
- *			register B channel 1 (read/write).
- *    DBTB1		Direct Memory Access (DMA) Buffer Transfer count
- *			register B channel 1 (read/write).
- *
- *    DDAR2		Direct Memory Access (DMA) Device Address Register
- *			channel 2 (read/write).
- *    DCSR2		Direct Memory Access (DMA) Control and Status
- *			Register channel 2 (read/write).
- *    DBSA2		Direct Memory Access (DMA) Buffer Start address
- *			register A channel 2 (read/write).
- *    DBTA2		Direct Memory Access (DMA) Buffer Transfer count
- *			register A channel 2 (read/write).
- *    DBSB2		Direct Memory Access (DMA) Buffer Start address
- *			register B channel 2 (read/write).
- *    DBTB2		Direct Memory Access (DMA) Buffer Transfer count
- *			register B channel 2 (read/write).
- *
- *    DDAR3		Direct Memory Access (DMA) Device Address Register
- *			channel 3 (read/write).
- *    DCSR3		Direct Memory Access (DMA) Control and Status
- *			Register channel 3 (read/write).
- *    DBSA3		Direct Memory Access (DMA) Buffer Start address
- *			register A channel 3 (read/write).
- *    DBTA3		Direct Memory Access (DMA) Buffer Transfer count
- *			register A channel 3 (read/write).
- *    DBSB3		Direct Memory Access (DMA) Buffer Start address
- *			register B channel 3 (read/write).
- *    DBTB3		Direct Memory Access (DMA) Buffer Transfer count
- *			register B channel 3 (read/write).
- *
- *    DDAR4		Direct Memory Access (DMA) Device Address Register
- *			channel 4 (read/write).
- *    DCSR4		Direct Memory Access (DMA) Control and Status
- *			Register channel 4 (read/write).
- *    DBSA4		Direct Memory Access (DMA) Buffer Start address
- *			register A channel 4 (read/write).
- *    DBTA4		Direct Memory Access (DMA) Buffer Transfer count
- *			register A channel 4 (read/write).
- *    DBSB4		Direct Memory Access (DMA) Buffer Start address
- *			register B channel 4 (read/write).
- *    DBTB4		Direct Memory Access (DMA) Buffer Transfer count
- *			register B channel 4 (read/write).
- *
- *    DDAR5		Direct Memory Access (DMA) Device Address Register
- *			channel 5 (read/write).
- *    DCSR5		Direct Memory Access (DMA) Control and Status
- *			Register channel 5 (read/write).
- *    DBSA5		Direct Memory Access (DMA) Buffer Start address
- *			register A channel 5 (read/write).
- *    DBTA5		Direct Memory Access (DMA) Buffer Transfer count
- *			register A channel 5 (read/write).
- *    DBSB5		Direct Memory Access (DMA) Buffer Start address
- *			register B channel 5 (read/write).
- *    DBTB5		Direct Memory Access (DMA) Buffer Transfer count
- *			register B channel 5 (read/write).
- */
-
-#define DMASp		0x00000020	/* DMA control reg. Space [byte]   */
-
-#define _DDAR(Nb)			/* DMA Device Address Reg.	   */ \
-					/* channel [0..5]		   */ \
-			(0xB0000000 + (Nb)*DMASp)
-#define _SetDCSR(Nb)			/* Set DMA Control & Status Reg.   */ \
-					/* channel [0..5] (write)	   */ \
-			(0xB0000004 + (Nb)*DMASp)
-#define _ClrDCSR(Nb)			/* Clear DMA Control & Status Reg. */ \
-					/* channel [0..5] (write)	   */ \
-			(0xB0000008 + (Nb)*DMASp)
-#define _RdDCSR(Nb)			/* Read DMA Control & Status Reg.  */ \
-					/* channel [0..5] (read)	   */ \
-			(0xB000000C + (Nb)*DMASp)
-#define _DBSA(Nb)			/* DMA Buffer Start address reg. A */ \
-					/* channel [0..5]		   */ \
-			(0xB0000010 + (Nb)*DMASp)
-#define _DBTA(Nb)			/* DMA Buffer Transfer count	   */ \
-					/* reg. A channel [0..5]	   */ \
-			(0xB0000014 + (Nb)*DMASp)
-#define _DBSB(Nb)			/* DMA Buffer Start address reg. B */ \
-					/* channel [0..5]		   */ \
-			(0xB0000018 + (Nb)*DMASp)
-#define _DBTB(Nb)			/* DMA Buffer Transfer count	   */ \
-					/* reg. B channel [0..5]	   */ \
-			(0xB000001C + (Nb)*DMASp)
-
-#define _DDAR0		_DDAR (0)	/* DMA Device Address Reg.	   */
-					/* channel 0			   */
-#define _SetDCSR0	_SetDCSR (0)	/* Set DMA Control & Status Reg.   */
-					/* channel 0 (write)		   */
-#define _ClrDCSR0	_ClrDCSR (0)	/* Clear DMA Control & Status Reg. */
-					/* channel 0 (write)		   */
-#define _RdDCSR0	_RdDCSR (0)	/* Read DMA Control & Status Reg.  */
-					/* channel 0 (read)		   */
-#define _DBSA0		_DBSA (0)	/* DMA Buffer Start address reg. A */
-					/* channel 0			   */
-#define _DBTA0		_DBTA (0)	/* DMA Buffer Transfer count	   */
-					/* reg. A channel 0		   */
-#define _DBSB0		_DBSB (0)	/* DMA Buffer Start address reg. B */
-					/* channel 0			   */
-#define _DBTB0		_DBTB (0)	/* DMA Buffer Transfer count	   */
-					/* reg. B channel 0		   */
-
-#define _DDAR1		_DDAR (1)	/* DMA Device Address Reg.	   */
-					/* channel 1			   */
-#define _SetDCSR1	_SetDCSR (1)	/* Set DMA Control & Status Reg.   */
-					/* channel 1 (write)		   */
-#define _ClrDCSR1	_ClrDCSR (1)	/* Clear DMA Control & Status Reg. */
-					/* channel 1 (write)		   */
-#define _RdDCSR1	_RdDCSR (1)	/* Read DMA Control & Status Reg.  */
-					/* channel 1 (read)		   */
-#define _DBSA1		_DBSA (1)	/* DMA Buffer Start address reg. A */
-					/* channel 1			   */
-#define _DBTA1		_DBTA (1)	/* DMA Buffer Transfer count	   */
-					/* reg. A channel 1		   */
-#define _DBSB1		_DBSB (1)	/* DMA Buffer Start address reg. B */
-					/* channel 1			   */
-#define _DBTB1		_DBTB (1)	/* DMA Buffer Transfer count	   */
-					/* reg. B channel 1		   */
-
-#define _DDAR2		_DDAR (2)	/* DMA Device Address Reg.	   */
-					/* channel 2			   */
-#define _SetDCSR2	_SetDCSR (2)	/* Set DMA Control & Status Reg.   */
-					/* channel 2 (write)		   */
-#define _ClrDCSR2	_ClrDCSR (2)	/* Clear DMA Control & Status Reg. */
-					/* channel 2 (write)		   */
-#define _RdDCSR2	_RdDCSR (2)	/* Read DMA Control & Status Reg.  */
-					/* channel 2 (read)		   */
-#define _DBSA2		_DBSA (2)	/* DMA Buffer Start address reg. A */
-					/* channel 2			   */
-#define _DBTA2		_DBTA (2)	/* DMA Buffer Transfer count	   */
-					/* reg. A channel 2		   */
-#define _DBSB2		_DBSB (2)	/* DMA Buffer Start address reg. B */
-					/* channel 2			   */
-#define _DBTB2		_DBTB (2)	/* DMA Buffer Transfer count	   */
-					/* reg. B channel 2		   */
-
-#define _DDAR3		_DDAR (3)	/* DMA Device Address Reg.	   */
-					/* channel 3			   */
-#define _SetDCSR3	_SetDCSR (3)	/* Set DMA Control & Status Reg.   */
-					/* channel 3 (write)		   */
-#define _ClrDCSR3	_ClrDCSR (3)	/* Clear DMA Control & Status Reg. */
-					/* channel 3 (write)		   */
-#define _RdDCSR3	_RdDCSR (3)	/* Read DMA Control & Status Reg.  */
-					/* channel 3 (read)		   */
-#define _DBSA3		_DBSA (3)	/* DMA Buffer Start address reg. A */
-					/* channel 3			   */
-#define _DBTA3		_DBTA (3)	/* DMA Buffer Transfer count	   */
-					/* reg. A channel 3		   */
-#define _DBSB3		_DBSB (3)	/* DMA Buffer Start address reg. B */
-					/* channel 3			   */
-#define _DBTB3		_DBTB (3)	/* DMA Buffer Transfer count	   */
-					/* reg. B channel 3		   */
-
-#define _DDAR4		_DDAR (4)	/* DMA Device Address Reg.	   */
-					/* channel 4			   */
-#define _SetDCSR4	_SetDCSR (4)	/* Set DMA Control & Status Reg.   */
-					/* channel 4 (write)		   */
-#define _ClrDCSR4	_ClrDCSR (4)	/* Clear DMA Control & Status Reg. */
-					/* channel 4 (write)		   */
-#define _RdDCSR4	_RdDCSR (4)	/* Read DMA Control & Status Reg.  */
-					/* channel 4 (read)		   */
-#define _DBSA4		_DBSA (4)	/* DMA Buffer Start address reg. A */
-					/* channel 4			   */
-#define _DBTA4		_DBTA (4)	/* DMA Buffer Transfer count	   */
-					/* reg. A channel 4		   */
-#define _DBSB4		_DBSB (4)	/* DMA Buffer Start address reg. B */
-					/* channel 4			   */
-#define _DBTB4		_DBTB (4)	/* DMA Buffer Transfer count	   */
-					/* reg. B channel 4		   */
-
-#define _DDAR5		_DDAR (5)	/* DMA Device Address Reg.	   */
-					/* channel 5			   */
-#define _SetDCSR5	_SetDCSR (5)	/* Set DMA Control & Status Reg.   */
-					/* channel 5 (write)		   */
-#define _ClrDCSR5	_ClrDCSR (5)	/* Clear DMA Control & Status Reg. */
-					/* channel 5 (write)		   */
-#define _RdDCSR5	_RdDCSR (5)	/* Read DMA Control & Status Reg.  */
-					/* channel 5 (read)		   */
-#define _DBSA5		_DBSA (5)	/* DMA Buffer Start address reg. A */
-					/* channel 5			   */
-#define _DBTA5		_DBTA (5)	/* DMA Buffer Transfer count	   */
-					/* reg. A channel 5		   */
-#define _DBSB5		_DBSB (5)	/* DMA Buffer Start address reg. B */
-					/* channel 5			   */
-#define _DBTB5		_DBTB (5)	/* DMA Buffer Transfer count	   */
-					/* reg. B channel 5		   */
-
-#if LANGUAGE == C
-
-#define DDAR0				/* DMA Device Address Reg.	   */ \
-					/* channel 0			   */ \
-			(*((volatile Word *) io_p2v (_DDAR0)))
-#define SetDCSR0			/* Set DMA Control & Status Reg.   */ \
-					/* channel 0 (write)		   */ \
-			(*((volatile Word *) io_p2v (_SetDCSR0)))
-#define ClrDCSR0			/* Clear DMA Control & Status Reg. */ \
-					/* channel 0 (write)		   */ \
-			(*((volatile Word *) io_p2v (_ClrDCSR0)))
-#define RdDCSR0				/* Read DMA Control & Status Reg.  */ \
-					/* channel 0 (read)		   */ \
-			(*((volatile Word *) io_p2v (_RdDCSR0)))
-#define DBSA0				/* DMA Buffer Start address reg. A */ \
-					/* channel 0			   */ \
-			(*((volatile Address *) io_p2v (_DBSA0)))
-#define DBTA0				/* DMA Buffer Transfer count	   */ \
-					/* reg. A channel 0		   */ \
-			(*((volatile Word *) io_p2v (_DBTA0)))
-#define DBSB0				/* DMA Buffer Start address reg. B */ \
-					/* channel 0			   */ \
-			(*((volatile Address *) io_p2v (_DBSB0)))
-#define DBTB0				/* DMA Buffer Transfer count	   */ \
-					/* reg. B channel 0		   */ \
-			(*((volatile Word *) io_p2v (_DBTB0)))
-
-#define DDAR1				/* DMA Device Address Reg.	   */ \
-					/* channel 1			   */ \
-			(*((volatile Word *) io_p2v (_DDAR1)))
-#define SetDCSR1			/* Set DMA Control & Status Reg.   */ \
-					/* channel 1 (write)		   */ \
-			(*((volatile Word *) io_p2v (_SetDCSR1)))
-#define ClrDCSR1			/* Clear DMA Control & Status Reg. */ \
-					/* channel 1 (write)		   */ \
-			(*((volatile Word *) io_p2v (_ClrDCSR1)))
-#define RdDCSR1				/* Read DMA Control & Status Reg.  */ \
-					/* channel 1 (read)		   */ \
-			(*((volatile Word *) io_p2v (_RdDCSR1)))
-#define DBSA1				/* DMA Buffer Start address reg. A */ \
-					/* channel 1			   */ \
-			(*((volatile Address *) io_p2v (_DBSA1)))
-#define DBTA1				/* DMA Buffer Transfer count	   */ \
-					/* reg. A channel 1		   */ \
-			(*((volatile Word *) io_p2v (_DBTA1)))
-#define DBSB1				/* DMA Buffer Start address reg. B */ \
-					/* channel 1			   */ \
-			(*((volatile Address *) io_p2v (_DBSB1)))
-#define DBTB1				/* DMA Buffer Transfer count	   */ \
-					/* reg. B channel 1		   */ \
-			(*((volatile Word *) io_p2v (_DBTB1)))
-
-#define DDAR2				/* DMA Device Address Reg.	   */ \
-					/* channel 2			   */ \
-			(*((volatile Word *) io_p2v (_DDAR2)))
-#define SetDCSR2			/* Set DMA Control & Status Reg.   */ \
-					/* channel 2 (write)		   */ \
-			(*((volatile Word *) io_p2v (_SetDCSR2)))
-#define ClrDCSR2			/* Clear DMA Control & Status Reg. */ \
-					/* channel 2 (write)		   */ \
-			(*((volatile Word *) io_p2v (_ClrDCSR2)))
-#define RdDCSR2				/* Read DMA Control & Status Reg.  */ \
-					/* channel 2 (read)		   */ \
-			(*((volatile Word *) io_p2v (_RdDCSR2)))
-#define DBSA2				/* DMA Buffer Start address reg. A */ \
-					/* channel 2			   */ \
-			(*((volatile Address *) io_p2v (_DBSA2)))
-#define DBTA2				/* DMA Buffer Transfer count	   */ \
-					/* reg. A channel 2		   */ \
-			(*((volatile Word *) io_p2v (_DBTA2)))
-#define DBSB2				/* DMA Buffer Start address reg. B */ \
-					/* channel 2			   */ \
-			(*((volatile Address *) io_p2v (_DBSB2)))
-#define DBTB2				/* DMA Buffer Transfer count	   */ \
-					/* reg. B channel 2		   */ \
-			(*((volatile Word *) io_p2v (_DBTB2)))
-
-#define DDAR3				/* DMA Device Address Reg.	   */ \
-					/* channel 3			   */ \
-			(*((volatile Word *) io_p2v (_DDAR3)))
-#define SetDCSR3			/* Set DMA Control & Status Reg.   */ \
-					/* channel 3 (write)		   */ \
-			(*((volatile Word *) io_p2v (_SetDCSR3)))
-#define ClrDCSR3			/* Clear DMA Control & Status Reg. */ \
-					/* channel 3 (write)		   */ \
-			(*((volatile Word *) io_p2v (_ClrDCSR3)))
-#define RdDCSR3				/* Read DMA Control & Status Reg.  */ \
-					/* channel 3 (read)		   */ \
-			(*((volatile Word *) io_p2v (_RdDCSR3)))
-#define DBSA3				/* DMA Buffer Start address reg. A */ \
-					/* channel 3			   */ \
-			(*((volatile Address *) io_p2v (_DBSA3)))
-#define DBTA3				/* DMA Buffer Transfer count	   */ \
-					/* reg. A channel 3		   */ \
-			(*((volatile Word *) io_p2v (_DBTA3)))
-#define DBSB3				/* DMA Buffer Start address reg. B */ \
-					/* channel 3			   */ \
-			(*((volatile Address *) io_p2v (_DBSB3)))
-#define DBTB3				/* DMA Buffer Transfer count	   */ \
-					/* reg. B channel 3		   */ \
-			(*((volatile Word *) io_p2v (_DBTB3)))
-
-#define DDAR4				/* DMA Device Address Reg.	   */ \
-					/* channel 4			   */ \
-			(*((volatile Word *) io_p2v (_DDAR4)))
-#define SetDCSR4			/* Set DMA Control & Status Reg.   */ \
-					/* channel 4 (write)		   */ \
-			(*((volatile Word *) io_p2v (_SetDCSR4)))
-#define ClrDCSR4			/* Clear DMA Control & Status Reg. */ \
-					/* channel 4 (write)		   */ \
-			(*((volatile Word *) io_p2v (_ClrDCSR4)))
-#define RdDCSR4				/* Read DMA Control & Status Reg.  */ \
-					/* channel 4 (read)		   */ \
-			(*((volatile Word *) io_p2v (_RdDCSR4)))
-#define DBSA4				/* DMA Buffer Start address reg. A */ \
-					/* channel 4			   */ \
-			(*((volatile Address *) io_p2v (_DBSA4)))
-#define DBTA4				/* DMA Buffer Transfer count	   */ \
-					/* reg. A channel 4		   */ \
-			(*((volatile Word *) io_p2v (_DBTA4)))
-#define DBSB4				/* DMA Buffer Start address reg. B */ \
-					/* channel 4			   */ \
-			(*((volatile Address *) io_p2v (_DBSB4)))
-#define DBTB4				/* DMA Buffer Transfer count	   */ \
-					/* reg. B channel 4		   */ \
-			(*((volatile Word *) io_p2v (_DBTB4)))
-
-#define DDAR5				/* DMA Device Address Reg.	   */ \
-					/* channel 5			   */ \
-			(*((volatile Word *) io_p2v (_DDAR5)))
-#define SetDCSR5			/* Set DMA Control & Status Reg.   */ \
-					/* channel 5 (write)		   */ \
-			(*((volatile Word *) io_p2v (_SetDCSR5)))
-#define ClrDCSR5			/* Clear DMA Control & Status Reg. */ \
-					/* channel 5 (write)		   */ \
-			(*((volatile Word *) io_p2v (_ClrDCSR5)))
-#define RdDCSR5				/* Read DMA Control & Status Reg.  */ \
-					/* channel 5 (read)		   */ \
-			(*((volatile Word *) io_p2v (_RdDCSR5)))
-#define DBSA5				/* DMA Buffer Start address reg. A */ \
-					/* channel 5			   */ \
-			(*((volatile Address *) io_p2v (_DBSA5)))
-#define DBTA5				/* DMA Buffer Transfer count	   */ \
-					/* reg. A channel 5		   */ \
-			(*((volatile Word *) io_p2v (_DBTA5)))
-#define DBSB5				/* DMA Buffer Start address reg. B */ \
-					/* channel 5			   */ \
-			(*((volatile Address *) io_p2v (_DBSB5)))
-#define DBTB5				/* DMA Buffer Transfer count	   */ \
-					/* reg. B channel 5		   */ \
-			(*((volatile Word *) io_p2v (_DBTB5)))
-
-#endif /* LANGUAGE == C */
-
-#define DDAR_RW		0x00000001	/* device data Read/Write	   */
-#define DDAR_DevWr	(DDAR_RW*0)	/*  Device data Write		   */
-					/*  (memory -> device)		   */
-#define DDAR_DevRd	(DDAR_RW*1)	/*  Device data Read		   */
-					/*  (device -> memory)		   */
-#define DDAR_E		0x00000002	/* big/little Endian device	   */
-#define DDAR_LtlEnd	(DDAR_E*0)	/*  Little Endian device	   */
-#define DDAR_BigEnd	(DDAR_E*1)	/*  Big Endian device		   */
-#define DDAR_BS		0x00000004	/* device Burst Size		   */
-#define DDAR_Brst4	(DDAR_BS*0)	/*  Burst-of-4 device		   */
-#define DDAR_Brst8	(DDAR_BS*1)	/*  Burst-of-8 device		   */
-#define DDAR_DW		0x00000008	/* device Data Width		   */
-#define DDAR_8BitDev	(DDAR_DW*0)	/*  8-Bit Device		   */
-#define DDAR_16BitDev	(DDAR_DW*1)	/*  16-Bit Device		   */
-#define DDAR_DS		Fld (4, 4)	/* Device Select		   */
-#define DDAR_Ser0UDCTr			/*  Ser. port 0 UDC Transmit	   */ \
-			(0x0 << FShft (DDAR_DS))
-#define DDAR_Ser0UDCRc			/*  Ser. port 0 UDC Receive	   */ \
-			(0x1 << FShft (DDAR_DS))
-#define DDAR_Ser1SDLCTr			/*  Ser. port 1 SDLC Transmit	   */ \
-			(0x2 << FShft (DDAR_DS))
-#define DDAR_Ser1SDLCRc			/*  Ser. port 1 SDLC Receive	   */ \
-			(0x3 << FShft (DDAR_DS))
-#define DDAR_Ser1UARTTr			/*  Ser. port 1 UART Transmit	   */ \
-			(0x4 << FShft (DDAR_DS))
-#define DDAR_Ser1UARTRc			/*  Ser. port 1 UART Receive	   */ \
-			(0x5 << FShft (DDAR_DS))
-#define DDAR_Ser2ICPTr			/*  Ser. port 2 ICP Transmit	   */ \
-			(0x6 << FShft (DDAR_DS))
-#define DDAR_Ser2ICPRc			/*  Ser. port 2 ICP Receive	   */ \
-			(0x7 << FShft (DDAR_DS))
-#define DDAR_Ser3UARTTr			/*  Ser. port 3 UART Transmit	   */ \
-			(0x8 << FShft (DDAR_DS))
-#define DDAR_Ser3UARTRc			/*  Ser. port 3 UART Receive	   */ \
-			(0x9 << FShft (DDAR_DS))
-#define DDAR_Ser4MCP0Tr			/*  Ser. port 4 MCP 0 Transmit	   */ \
-					/*  (audio)			   */ \
-			(0xA << FShft (DDAR_DS))
-#define DDAR_Ser4MCP0Rc			/*  Ser. port 4 MCP 0 Receive	   */ \
-					/*  (audio)			   */ \
-			(0xB << FShft (DDAR_DS))
-#define DDAR_Ser4MCP1Tr			/*  Ser. port 4 MCP 1 Transmit	   */ \
-					/*  (telecom)			   */ \
-			(0xC << FShft (DDAR_DS))
-#define DDAR_Ser4MCP1Rc			/*  Ser. port 4 MCP 1 Receive	   */ \
-					/*  (telecom)			   */ \
-			(0xD << FShft (DDAR_DS))
-#define DDAR_Ser4SSPTr			/*  Ser. port 4 SSP Transmit	   */ \
-			(0xE << FShft (DDAR_DS))
-#define DDAR_Ser4SSPRc			/*  Ser. port 4 SSP Receive	   */ \
-			(0xF << FShft (DDAR_DS))
-#define DDAR_DA		Fld (24, 8)	/* Device Address		   */
-#define DDAR_DevAdd(Add)		/*  Device Address		   */ \
-			(((Add) & 0xF0000000) | \
-			 (((Add) & 0X003FFFFC) << (FShft (DDAR_DA) - 2)))
-#define DDAR_Ser0UDCWr			/* Ser. port 0 UDC Write	   */ \
-			(DDAR_DevWr + DDAR_Brst8 + DDAR_8BitDev + \
-			 DDAR_Ser0UDCTr + DDAR_DevAdd (_Ser0UDCDR))
-#define DDAR_Ser0UDCRd			/* Ser. port 0 UDC Read		   */ \
-			(DDAR_DevRd + DDAR_Brst8 + DDAR_8BitDev + \
-			 DDAR_Ser0UDCRc + DDAR_DevAdd (_Ser0UDCDR))
-#define DDAR_Ser1UARTWr			/* Ser. port 1 UART Write	   */ \
-			(DDAR_DevWr + DDAR_Brst4 + DDAR_8BitDev + \
-			 DDAR_Ser1UARTTr + DDAR_DevAdd (_Ser1UTDR))
-#define DDAR_Ser1UARTRd			/* Ser. port 1 UART Read	   */ \
-			(DDAR_DevRd + DDAR_Brst4 + DDAR_8BitDev + \
-			 DDAR_Ser1UARTRc + DDAR_DevAdd (_Ser1UTDR))
-#define DDAR_Ser1SDLCWr			/* Ser. port 1 SDLC Write	   */ \
-			(DDAR_DevWr + DDAR_Brst4 + DDAR_8BitDev + \
-			 DDAR_Ser1SDLCTr + DDAR_DevAdd (_Ser1SDDR))
-#define DDAR_Ser1SDLCRd			/* Ser. port 1 SDLC Read	   */ \
-			(DDAR_DevRd + DDAR_Brst4 + DDAR_8BitDev + \
-			 DDAR_Ser1SDLCRc + DDAR_DevAdd (_Ser1SDDR))
-#define DDAR_Ser2UARTWr			/* Ser. port 2 UART Write	   */ \
-			(DDAR_DevWr + DDAR_Brst4 + DDAR_8BitDev + \
-			 DDAR_Ser2ICPTr + DDAR_DevAdd (_Ser2UTDR))
-#define DDAR_Ser2UARTRd			/* Ser. port 2 UART Read	   */ \
-			(DDAR_DevRd + DDAR_Brst4 + DDAR_8BitDev + \
-			 DDAR_Ser2ICPRc + DDAR_DevAdd (_Ser2UTDR))
-#define DDAR_Ser2HSSPWr			/* Ser. port 2 HSSP Write	   */ \
-			(DDAR_DevWr + DDAR_Brst8 + DDAR_8BitDev + \
-			 DDAR_Ser2ICPTr + DDAR_DevAdd (_Ser2HSDR))
-#define DDAR_Ser2HSSPRd			/* Ser. port 2 HSSP Read	   */ \
-			(DDAR_DevRd + DDAR_Brst8 + DDAR_8BitDev + \
-			 DDAR_Ser2ICPRc + DDAR_DevAdd (_Ser2HSDR))
-#define DDAR_Ser3UARTWr			/* Ser. port 3 UART Write	   */ \
-			(DDAR_DevWr + DDAR_Brst4 + DDAR_8BitDev + \
-			 DDAR_Ser3UARTTr + DDAR_DevAdd (_Ser3UTDR))
-#define DDAR_Ser3UARTRd			/* Ser. port 3 UART Read	   */ \
-			(DDAR_DevRd + DDAR_Brst4 + DDAR_8BitDev + \
-			 DDAR_Ser3UARTRc + DDAR_DevAdd (_Ser3UTDR))
-#define DDAR_Ser4MCP0Wr			/* Ser. port 4 MCP 0 Write (audio) */ \
-			(DDAR_DevWr + DDAR_Brst4 + DDAR_16BitDev + \
-			 DDAR_Ser4MCP0Tr + DDAR_DevAdd (_Ser4MCDR0))
-#define DDAR_Ser4MCP0Rd			/* Ser. port 4 MCP 0 Read (audio)  */ \
-			(DDAR_DevRd + DDAR_Brst4 + DDAR_16BitDev + \
-			 DDAR_Ser4MCP0Rc + DDAR_DevAdd (_Ser4MCDR0))
-#define DDAR_Ser4MCP1Wr			/* Ser. port 4 MCP 1 Write	   */ \
-					/* (telecom)			   */ \
-			(DDAR_DevWr + DDAR_Brst4 + DDAR_16BitDev + \
-			 DDAR_Ser4MCP1Tr + DDAR_DevAdd (_Ser4MCDR1))
-#define DDAR_Ser4MCP1Rd			/* Ser. port 4 MCP 1 Read	   */ \
-					/* (telecom)			   */ \
-			(DDAR_DevRd + DDAR_Brst4 + DDAR_16BitDev + \
-			 DDAR_Ser4MCP1Rc + DDAR_DevAdd (_Ser4MCDR1))
-#define DDAR_Ser4SSPWr			/* Ser. port 4 SSP Write (16 bits) */ \
-			(DDAR_DevWr + DDAR_Brst4 + DDAR_16BitDev + \
-			 DDAR_Ser4SSPTr + DDAR_DevAdd (_Ser4SSDR))
-#define DDAR_Ser4SSPRd			/* Ser. port 4 SSP Read (16 bits)  */ \
-			(DDAR_DevRd + DDAR_Brst4 + DDAR_16BitDev + \
-			 DDAR_Ser4SSPRc + DDAR_DevAdd (_Ser4SSDR))
-
-#define DCSR_RUN	0x00000001	/* DMA RUNing			   */
-#define DCSR_IE		0x00000002	/* DMA Interrupt Enable		   */
-#define DCSR_ERROR	0x00000004	/* DMA ERROR			   */
-#define DCSR_DONEA	0x00000008	/* DONE DMA transfer buffer A	   */
-#define DCSR_STRTA	0x00000010	/* STaRTed DMA transfer buffer A   */
-#define DCSR_DONEB	0x00000020	/* DONE DMA transfer buffer B	   */
-#define DCSR_STRTB	0x00000040	/* STaRTed DMA transfer buffer B   */
-#define DCSR_BIU	0x00000080	/* DMA Buffer In Use		   */
-#define DCSR_BufA	(DCSR_BIU*0)	/*  DMA Buffer A in use		   */
-#define DCSR_BufB	(DCSR_BIU*1)	/*  DMA Buffer B in use		   */
-
-#define DBT_TC		Fld (13, 0)	/* Transfer Count		   */
-#define DBTA_TCA	DBT_TC		/* Transfer Count buffer A	   */
-#define DBTB_TCB	DBT_TC		/* Transfer Count buffer B	   */
-
-
-/*
- * Liquid Crystal Display (LCD) control registers
- *
- * Registers
- *    LCCR0		Liquid Crystal Display (LCD) Control Register 0
- *			(read/write).
- *			[Bits LDM, BAM, and ERM are only implemented in
- *			versions 2.0 (rev. = 8) and higher of the StrongARM
- *			SA-1100.]
- *    LCSR		Liquid Crystal Display (LCD) Status Register
- *			(read/write).
- *			[Bit LDD can be only read in versions 1.0 (rev. = 1)
- *			and 1.1 (rev. = 2) of the StrongARM SA-1100, it can be
- *			read and written (cleared) in versions 2.0 (rev. = 8)
- *			and higher.]
- *    DBAR1		Liquid Crystal Display (LCD) Direct Memory Access
- *			(DMA) Base Address Register channel 1 (read/write).
- *    DCAR1		Liquid Crystal Display (LCD) Direct Memory Access
- *			(DMA) Current Address Register channel 1 (read).
- *    DBAR2		Liquid Crystal Display (LCD) Direct Memory Access
- *			(DMA) Base Address Register channel 2 (read/write).
- *    DCAR2		Liquid Crystal Display (LCD) Direct Memory Access
- *			(DMA) Current Address Register channel 2 (read).
- *    LCCR1		Liquid Crystal Display (LCD) Control Register 1
- *			(read/write).
- *			[The LCCR1 register can be only written in
- *			versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
- *			StrongARM SA-1100, it can be written and read in
- *			versions 2.0 (rev. = 8) and higher.]
- *    LCCR2		Liquid Crystal Display (LCD) Control Register 2
- *			(read/write).
- *			[The LCCR1 register can be only written in
- *			versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
- *			StrongARM SA-1100, it can be written and read in
- *			versions 2.0 (rev. = 8) and higher.]
- *    LCCR3		Liquid Crystal Display (LCD) Control Register 3
- *			(read/write).
- *			[The LCCR1 register can be only written in
- *			versions 1.0 (rev. = 1) and 1.1 (rev. = 2) of the
- *			StrongARM SA-1100, it can be written and read in
- *			versions 2.0 (rev. = 8) and higher. Bit PCP is only
- *			implemented in versions 2.0 (rev. = 8) and higher of
- *			the StrongARM SA-1100.]
- *
- * Clocks
- *    fcpu, Tcpu	Frequency, period of the CPU core clock (CCLK).
- *    fmem, Tmem	Frequency, period of the memory clock (fmem = fcpu/2).
- *    fpix, Tpix	Frequency, period of the pixel clock.
- *    fln, Tln		Frequency, period of the line clock.
- *    fac, Tac		Frequency, period of the AC bias clock.
- */
-
-#define LCD_PEntrySp	2		/* LCD Palette Entry Space [byte]  */
-#define LCD_4BitPSp			/* LCD 4-Bit pixel Palette Space   */ \
-					/* [byte]			   */ \
-			(16*LCD_PEntrySp)
-#define LCD_8BitPSp			/* LCD 8-Bit pixel Palette Space   */ \
-					/* [byte]			   */ \
-			(256*LCD_PEntrySp)
-#define LCD_12_16BitPSp			/* LCD 12/16-Bit pixel		   */ \
-					/* dummy-Palette Space [byte]	   */ \
-			(16*LCD_PEntrySp)
-
-#define LCD_PGrey	Fld (4, 0)	/* LCD Palette entry Grey value    */
-#define LCD_PBlue	Fld (4, 0)	/* LCD Palette entry Blue value    */
-#define LCD_PGreen	Fld (4, 4)	/* LCD Palette entry Green value   */
-#define LCD_PRed	Fld (4, 8)	/* LCD Palette entry Red value	   */
-#define LCD_PBS		Fld (2, 12)	/* LCD Pixel Bit Size		   */
-#define LCD_4Bit			/*  LCD 4-Bit pixel mode	   */ \
-			(0 << FShft (LCD_PBS))
-#define LCD_8Bit			/*  LCD 8-Bit pixel mode	   */ \
-			(1 << FShft (LCD_PBS))
-#define LCD_12_16Bit			/*  LCD 12/16-Bit pixel mode	   */ \
-			(2 << FShft (LCD_PBS))
-
-#define LCD_Int0_0	0x0		/* LCD Intensity =   0.0% =  0	   */
-#define LCD_Int11_1	0x1		/* LCD Intensity =  11.1% =  1/9   */
-#define LCD_Int20_0	0x2		/* LCD Intensity =  20.0% =  1/5   */
-#define LCD_Int26_7	0x3		/* LCD Intensity =  26.7% =  4/15  */
-#define LCD_Int33_3	0x4		/* LCD Intensity =  33.3% =  3/9   */
-#define LCD_Int40_0	0x5		/* LCD Intensity =  40.0% =  2/5   */
-#define LCD_Int44_4	0x6		/* LCD Intensity =  44.4% =  4/9   */
-#define LCD_Int50_0	0x7		/* LCD Intensity =  50.0% =  1/2   */
-#define LCD_Int55_6	0x8		/* LCD Intensity =  55.6% =  5/9   */
-#define LCD_Int60_0	0x9		/* LCD Intensity =  60.0% =  3/5   */
-#define LCD_Int66_7	0xA		/* LCD Intensity =  66.7% =  6/9   */
-#define LCD_Int73_3	0xB		/* LCD Intensity =  73.3% = 11/15  */
-#define LCD_Int80_0	0xC		/* LCD Intensity =  80.0% =  4/5   */
-#define LCD_Int88_9	0xD		/* LCD Intensity =  88.9% =  8/9   */
-#define LCD_Int100_0	0xE		/* LCD Intensity = 100.0% =  1	   */
-#define LCD_Int100_0A	0xF		/* LCD Intensity = 100.0% =  1	   */
-					/* (Alternative)		   */
-
-#define _LCCR0		0xB0100000	/* LCD Control Reg. 0		   */
-#define _LCSR		0xB0100004	/* LCD Status Reg.		   */
-#define _DBAR1		0xB0100010	/* LCD DMA Base Address Reg.	   */
-					/* channel 1			   */
-#define _DCAR1		0xB0100014	/* LCD DMA Current Address Reg.    */
-					/* channel 1			   */
-#define _DBAR2		0xB0100018	/* LCD DMA Base Address Reg.	   */
-					/* channel 2			   */
-#define _DCAR2		0xB010001C	/* LCD DMA Current Address Reg.    */
-					/* channel 2			   */
-#define _LCCR1		0xB0100020	/* LCD Control Reg. 1		   */
-#define _LCCR2		0xB0100024	/* LCD Control Reg. 2		   */
-#define _LCCR3		0xB0100028	/* LCD Control Reg. 3		   */
-
-#if LANGUAGE == C
-#define LCCR0				/* LCD Control Reg. 0		   */ \
-			(*((volatile Word *) io_p2v (_LCCR0)))
-#define LCSR				/* LCD Status Reg.		   */ \
-			(*((volatile Word *) io_p2v (_LCSR)))
-#define DBAR1				/* LCD DMA Base Address Reg.	   */ \
-					/* channel 1			   */ \
-			(*((volatile Address *) io_p2v (_DBAR1)))
-#define DCAR1				/* LCD DMA Current Address Reg.    */ \
-					/* channel 1			   */ \
-			(*((volatile Address *) io_p2v (_DCAR1)))
-#define DBAR2				/* LCD DMA Base Address Reg.	   */ \
-					/* channel 2			   */ \
-			(*((volatile Address *) io_p2v (_DBAR2)))
-#define DCAR2				/* LCD DMA Current Address Reg.    */ \
-					/* channel 2			   */ \
-			(*((volatile Address *) io_p2v (_DCAR2)))
-#define LCCR1				/* LCD Control Reg. 1		   */ \
-			(*((volatile Word *) io_p2v (_LCCR1)))
-#define LCCR2				/* LCD Control Reg. 2		   */ \
-			(*((volatile Word *) io_p2v (_LCCR2)))
-#define LCCR3				/* LCD Control Reg. 3		   */ \
-			(*((volatile Word *) io_p2v (_LCCR3)))
-#endif /* LANGUAGE == C */
-
-#define LCCR0_LEN	0x00000001	/* LCD ENable			   */
-#define LCCR0_CMS	0x00000002	/* Color/Monochrome display Select */
-#define LCCR0_Color	(LCCR0_CMS*0)	/*  Color display		   */
-#define LCCR0_Mono	(LCCR0_CMS*1)	/*  Monochrome display		   */
-#define LCCR0_SDS	0x00000004	/* Single/Dual panel display	   */
-					/* Select			   */
-#define LCCR0_Sngl	(LCCR0_SDS*0)	/*  Single panel display	   */
-#define LCCR0_Dual	(LCCR0_SDS*1)	/*  Dual panel display		   */
-#define LCCR0_LDM	0x00000008	/* LCD Disable done (LDD)	   */
-					/* interrupt Mask (disable)	   */
-#define LCCR0_BAM	0x00000010	/* Base Address update (BAU)	   */
-					/* interrupt Mask (disable)	   */
-#define LCCR0_ERM	0x00000020	/* LCD ERror (BER, IOL, IUL, IOU,  */
-					/* IUU, OOL, OUL, OOU, and OUU)    */
-					/* interrupt Mask (disable)	   */
-#define LCCR0_PAS	0x00000080	/* Passive/Active display Select   */
-#define LCCR0_Pas	(LCCR0_PAS*0)	/*  Passive display (STN)	   */
-#define LCCR0_Act	(LCCR0_PAS*1)	/*  Active display (TFT)	   */
-#define LCCR0_BLE	0x00000100	/* Big/Little Endian select	   */
-#define LCCR0_LtlEnd	(LCCR0_BLE*0)	/*  Little Endian frame buffer	   */
-#define LCCR0_BigEnd	(LCCR0_BLE*1)	/*  Big Endian frame buffer	   */
-#define LCCR0_DPD	0x00000200	/* Double Pixel Data (monochrome   */
-					/* display mode)		   */
-#define LCCR0_4PixMono	(LCCR0_DPD*0)	/*  4-Pixel/clock Monochrome	   */
-					/*  display			   */
-#define LCCR0_8PixMono	(LCCR0_DPD*1)	/*  8-Pixel/clock Monochrome	   */
-					/*  display			   */
-#define LCCR0_PDD	Fld (8, 12)	/* Palette DMA request Delay	   */
-					/* [Tmem]			   */
-#define LCCR0_DMADel(Tcpu)		/*  palette DMA request Delay	   */ \
-					/*  [0..510 Tcpu]		   */ \
-			((Tcpu)/2 << FShft (LCCR0_PDD))
-
-#define LCSR_LDD	0x00000001	/* LCD Disable Done		   */
-#define LCSR_BAU	0x00000002	/* Base Address Update (read)	   */
-#define LCSR_BER	0x00000004	/* Bus ERror			   */
-#define LCSR_ABC	0x00000008	/* AC Bias clock Count		   */
-#define LCSR_IOL	0x00000010	/* Input FIFO Over-run Lower	   */
-					/* panel			   */
-#define LCSR_IUL	0x00000020	/* Input FIFO Under-run Lower	   */
-					/* panel			   */
-#define LCSR_IOU	0x00000040	/* Input FIFO Over-run Upper	   */
-					/* panel			   */
-#define LCSR_IUU	0x00000080	/* Input FIFO Under-run Upper	   */
-					/* panel			   */
-#define LCSR_OOL	0x00000100	/* Output FIFO Over-run Lower	   */
-					/* panel			   */
-#define LCSR_OUL	0x00000200	/* Output FIFO Under-run Lower	   */
-					/* panel			   */
-#define LCSR_OOU	0x00000400	/* Output FIFO Over-run Upper	   */
-					/* panel			   */
-#define LCSR_OUU	0x00000800	/* Output FIFO Under-run Upper	   */
-					/* panel			   */
-
-#define LCCR1_PPL	Fld (6, 4)	/* Pixels Per Line/16 - 1	   */
-#define LCCR1_DisWdth(Pixel)		/*  Display Width [16..1024 pix.]  */ \
-			(((Pixel) - 16)/16 << FShft (LCCR1_PPL))
-#define LCCR1_HSW	Fld (6, 10)	/* Horizontal Synchronization	   */
-					/* pulse Width - 2 [Tpix] (L_LCLK) */
-#define LCCR1_HorSnchWdth(Tpix)		/*  Horizontal Synchronization	   */ \
-					/*  pulse Width [2..65 Tpix]	   */ \
-			(((Tpix) - 2) << FShft (LCCR1_HSW))
-#define LCCR1_ELW	Fld (8, 16)	/* End-of-Line pixel clock Wait    */
-					/* count - 1 [Tpix]		   */
-#define LCCR1_EndLnDel(Tpix)		/*  End-of-Line Delay		   */ \
-					/*  [1..256 Tpix]		   */ \
-			(((Tpix) - 1) << FShft (LCCR1_ELW))
-#define LCCR1_BLW	Fld (8, 24)	/* Beginning-of-Line pixel clock   */
-					/* Wait count - 1 [Tpix]	   */
-#define LCCR1_BegLnDel(Tpix)		/*  Beginning-of-Line Delay	   */ \
-					/*  [1..256 Tpix]		   */ \
-			(((Tpix) - 1) << FShft (LCCR1_BLW))
-
-#define LCCR2_LPP	Fld (10, 0)	/* Line Per Panel - 1		   */
-#define LCCR2_DisHght(Line)		/*  Display Height [1..1024 lines] */ \
-			(((Line) - 1) << FShft (LCCR2_LPP))
-#define LCCR2_VSW	Fld (6, 10)	/* Vertical Synchronization pulse  */
-					/* Width - 1 [Tln] (L_FCLK)	   */
-#define LCCR2_VrtSnchWdth(Tln)		/*  Vertical Synchronization pulse */ \
-					/*  Width [1..64 Tln]		   */ \
-			(((Tln) - 1) << FShft (LCCR2_VSW))
-#define LCCR2_EFW	Fld (8, 16)	/* End-of-Frame line clock Wait    */
-					/* count [Tln]			   */
-#define LCCR2_EndFrmDel(Tln)		/*  End-of-Frame Delay		   */ \
-					/*  [0..255 Tln]		   */ \
-			((Tln) << FShft (LCCR2_EFW))
-#define LCCR2_BFW	Fld (8, 24)	/* Beginning-of-Frame line clock   */
-					/* Wait count [Tln]		   */
-#define LCCR2_BegFrmDel(Tln)		/*  Beginning-of-Frame Delay	   */ \
-					/*  [0..255 Tln]		   */ \
-			((Tln) << FShft (LCCR2_BFW))
-
-#define LCCR3_PCD	Fld (8, 0)	/* Pixel Clock Divisor/2 - 2	   */
-					/* [1..255] (L_PCLK)		   */
-					/* fpix = fcpu/(2*(PCD + 2))	   */
-					/* Tpix = 2*(PCD + 2)*Tcpu	   */
-#define LCCR3_PixClkDiv(Div)		/*  Pixel Clock Divisor [6..514]   */ \
-			(((Div) - 4)/2 << FShft (LCCR3_PCD))
-					/*  fpix = fcpu/(2*Floor (Div/2))  */
-					/*  Tpix = 2*Floor (Div/2)*Tcpu    */
-#define LCCR3_CeilPixClkDiv(Div)	/*  Ceil. of PixClkDiv [6..514]    */ \
-			(((Div) - 3)/2 << FShft (LCCR3_PCD))
-					/*  fpix = fcpu/(2*Ceil (Div/2))   */
-					/*  Tpix = 2*Ceil (Div/2)*Tcpu	   */
-#define LCCR3_ACB	Fld (8, 8)	/* AC Bias clock half period - 1   */
-					/* [Tln] (L_BIAS)		   */
-#define LCCR3_ACBsDiv(Div)		/*  AC Bias clock Divisor [2..512] */ \
-			(((Div) - 2)/2 << FShft (LCCR3_ACB))
-					/*  fac = fln/(2*Floor (Div/2))    */
-					/*  Tac = 2*Floor (Div/2)*Tln	   */
-#define LCCR3_CeilACBsDiv(Div)		/*  Ceil. of ACBsDiv [2..512]	   */ \
-			(((Div) - 1)/2 << FShft (LCCR3_ACB))
-					/*  fac = fln/(2*Ceil (Div/2))	   */
-					/*  Tac = 2*Ceil (Div/2)*Tln	   */
-#define LCCR3_API	Fld (4, 16)	/* AC bias Pin transitions per	   */
-					/* Interrupt			   */
-#define LCCR3_ACBsCntOff		/*  AC Bias clock transition Count */ \
-					/*  Off				   */ \
-			(0 << FShft (LCCR3_API))
-#define LCCR3_ACBsCnt(Trans)		/*  AC Bias clock transition Count */ \
-					/*  [1..15]			   */ \
-			((Trans) << FShft (LCCR3_API))
-#define LCCR3_VSP	0x00100000	/* Vertical Synchronization pulse  */
-					/* Polarity (L_FCLK)		   */
-#define LCCR3_VrtSnchH	(LCCR3_VSP*0)	/*  Vertical Synchronization pulse */
-					/*  active High			   */
-#define LCCR3_VrtSnchL	(LCCR3_VSP*1)	/*  Vertical Synchronization pulse */
-					/*  active Low			   */
-#define LCCR3_HSP	0x00200000	/* Horizontal Synchronization	   */
-					/* pulse Polarity (L_LCLK)	   */
-#define LCCR3_HorSnchH	(LCCR3_HSP*0)	/*  Horizontal Synchronization	   */
-					/*  pulse active High		   */
-#define LCCR3_HorSnchL	(LCCR3_HSP*1)	/*  Horizontal Synchronization	   */
-					/*  pulse active Low		   */
-#define LCCR3_PCP	0x00400000	/* Pixel Clock Polarity (L_PCLK)   */
-#define LCCR3_PixRsEdg	(LCCR3_PCP*0)	/*  Pixel clock Rising-Edge	   */
-#define LCCR3_PixFlEdg	(LCCR3_PCP*1)	/*  Pixel clock Falling-Edge	   */
-#define LCCR3_OEP	0x00800000	/* Output Enable Polarity (L_BIAS, */
-					/* active display mode)		   */
-#define LCCR3_OutEnH	(LCCR3_OEP*0)	/*  Output Enable active High	   */
-#define LCCR3_OutEnL	(LCCR3_OEP*1)	/*  Output Enable active Low	   */
-
-
-#undef C
-#undef Assembly
diff --git a/include/configs/P1010RDB.h b/include/configs/P1010RDB.h
index d263999..12a78ea 100644
--- a/include/configs/P1010RDB.h
+++ b/include/configs/P1010RDB.h
@@ -118,7 +118,6 @@
 #define CONFIG_SYS_DDR_CS0_BNDS		0x0000003f
 #define CONFIG_SYS_DDR_CS0_CONFIG	0x80014302
 #define CONFIG_SYS_DDR_CS0_CONFIG_2	0x00000000
-#define CONFIG_SYS_DDR_DATA_INIT	0xdeadbeef
 #define CONFIG_SYS_DDR_INIT_ADDR	0x00000000
 #define CONFIG_SYS_DDR_INIT_EXT_ADDR	0x00000000
 #define CONFIG_SYS_DDR_MODE_CONTROL	0x00000000
diff --git a/include/configs/P2041RDB.h b/include/configs/P2041RDB.h
index 64f4c24..2d55283 100644
--- a/include/configs/P2041RDB.h
+++ b/include/configs/P2041RDB.h
@@ -45,7 +45,6 @@
 /*
  * These can be toggled for performance analysis, otherwise use default.
  */
-#define CONFIG_SYS_CACHE_STASHING
 #define CONFIG_SYS_INIT_L2CSR0		L2CSR0_L2E
 
 #define CONFIG_POST CONFIG_SYS_POST_MEMORY	/* test POST memory test */
diff --git a/include/configs/T102xRDB.h b/include/configs/T102xRDB.h
index 3df6ec6..c90ffe0 100644
--- a/include/configs/T102xRDB.h
+++ b/include/configs/T102xRDB.h
@@ -95,7 +95,6 @@
 /*
  * These can be toggled for performance analysis, otherwise use default.
  */
-#define CONFIG_SYS_CACHE_STASHING
 #define CONFIG_SYS_INIT_L2CSR0		L2CSR0_L2E
 #ifdef CONFIG_DDR_ECC
 #define CONFIG_MEM_INIT_VALUE		0xdeadbeef
diff --git a/include/configs/T104xRDB.h b/include/configs/T104xRDB.h
index 8503fd1..56486cf 100644
--- a/include/configs/T104xRDB.h
+++ b/include/configs/T104xRDB.h
@@ -63,7 +63,6 @@
 /*
  * These can be toggled for performance analysis, otherwise use default.
  */
-#define CONFIG_SYS_CACHE_STASHING
 #define CONFIG_SYS_INIT_L2CSR0		L2CSR0_L2E
 #ifdef CONFIG_DDR_ECC
 #define CONFIG_MEM_INIT_VALUE		0xdeadbeef
diff --git a/include/configs/T208xQDS.h b/include/configs/T208xQDS.h
index e981f62..710254a 100644
--- a/include/configs/T208xQDS.h
+++ b/include/configs/T208xQDS.h
@@ -68,7 +68,6 @@
 /*
  * These can be toggled for performance analysis, otherwise use default.
  */
-#define CONFIG_SYS_CACHE_STASHING
 #ifdef CONFIG_DDR_ECC
 #define CONFIG_MEM_INIT_VALUE		0xdeadbeef
 #endif
diff --git a/include/configs/T208xRDB.h b/include/configs/T208xRDB.h
index 48cdc75..8ade2e3 100644
--- a/include/configs/T208xRDB.h
+++ b/include/configs/T208xRDB.h
@@ -63,7 +63,6 @@
 /*
  * These can be toggled for performance analysis, otherwise use default.
  */
-#define CONFIG_SYS_CACHE_STASHING
 #ifdef CONFIG_DDR_ECC
 #define CONFIG_MEM_INIT_VALUE		0xdeadbeef
 #endif
diff --git a/include/configs/T4240RDB.h b/include/configs/T4240RDB.h
index c31b0b6..653483c 100644
--- a/include/configs/T4240RDB.h
+++ b/include/configs/T4240RDB.h
@@ -44,7 +44,6 @@
 /*
  * These can be toggled for performance analysis, otherwise use default.
  */
-#define CONFIG_SYS_CACHE_STASHING
 #ifdef CONFIG_DDR_ECC
 #define CONFIG_MEM_INIT_VALUE		0xdeadbeef
 #endif
diff --git a/include/configs/am3517_evm.h b/include/configs/am3517_evm.h
index e6c9039..93beed4 100644
--- a/include/configs/am3517_evm.h
+++ b/include/configs/am3517_evm.h
@@ -85,9 +85,6 @@
 
 /* memtest works on */
 
-/* Physical Memory Map */
-#define CONFIG_SYS_CS0_SIZE		(256 * 1024 * 1024)
-
 /* FLASH and environment organization */
 
 /* **** PISMO SUPPORT *** */
diff --git a/include/configs/corenet_ds.h b/include/configs/corenet_ds.h
index f20f4e3..4eeca47 100644
--- a/include/configs/corenet_ds.h
+++ b/include/configs/corenet_ds.h
@@ -38,7 +38,6 @@
 /*
  * These can be toggled for performance analysis, otherwise use default.
  */
-#define CONFIG_SYS_CACHE_STASHING
 #define CONFIG_SYS_INIT_L2CSR0		L2CSR0_L2E
 #ifdef CONFIG_DDR_ECC
 #define CONFIG_MEM_INIT_VALUE		0xdeadbeef
diff --git a/include/configs/kmcent2.h b/include/configs/kmcent2.h
index 3f22ddc..b389229 100644
--- a/include/configs/kmcent2.h
+++ b/include/configs/kmcent2.h
@@ -146,7 +146,6 @@
 /*
  * These can be toggled for performance analysis, otherwise use default.
  */
-#define CONFIG_SYS_CACHE_STASHING
 #define CONFIG_SYS_INIT_L2CSR0		L2CSR0_L2E
 
 /* POST memory regions test */
diff --git a/include/configs/legoev3.h b/include/configs/legoev3.h
index 418b08e..f0ae924 100644
--- a/include/configs/legoev3.h
+++ b/include/configs/legoev3.h
@@ -42,12 +42,6 @@
 #define CONFIG_SYS_SPI_CLK		clk_get(DAVINCI_SPI0_CLKID)
 
 /*
- * I2C Configuration
- */
-#define CONFIG_SYS_DAVINCI_I2C_SPEED		400000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE   10 /* Bogus, master-only in U-Boot */
-
-/*
  * U-Boot general configuration
  */
 
diff --git a/include/configs/omapl138_lcdk.h b/include/configs/omapl138_lcdk.h
index c9f5004..c644768 100644
--- a/include/configs/omapl138_lcdk.h
+++ b/include/configs/omapl138_lcdk.h
@@ -99,8 +99,6 @@
 /*
  * I2C Configuration
  */
-#define CONFIG_SYS_DAVINCI_I2C_SPEED	25000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE	10 /* Bogus, master-only in U-Boot */
 #define CONFIG_SYS_I2C_EXPANDER_ADDR	0x20
 
 /*
diff --git a/include/configs/p1_p2_rdb_pc.h b/include/configs/p1_p2_rdb_pc.h
index e921739..a0d5830 100644
--- a/include/configs/p1_p2_rdb_pc.h
+++ b/include/configs/p1_p2_rdb_pc.h
@@ -132,7 +132,6 @@
 #define CONFIG_SYS_DDR_CS1_CONFIG	0x80014302
 #define CONFIG_SYS_DDR_CS1_CONFIG_2	0x00000000
 
-#define CONFIG_SYS_DDR_DATA_INIT	0xdeadbeef
 #define CONFIG_SYS_DDR_INIT_ADDR	0x00000000
 #define CONFIG_SYS_DDR_INIT_EXT_ADDR	0x00000000
 #define CONFIG_SYS_DDR_MODE_CONTROL	0x00000000
diff --git a/include/configs/ti_armv7_keystone2.h b/include/configs/ti_armv7_keystone2.h
index bf76afa..29a6038 100644
--- a/include/configs/ti_armv7_keystone2.h
+++ b/include/configs/ti_armv7_keystone2.h
@@ -59,14 +59,6 @@
 #define CONFIG_KSNET_SERDES_SGMII2_BASE		KS2_SGMII_SERDES2_BASE
 #define CONFIG_KSNET_SERDES_LANES_PER_SGMII	KS2_LANES_PER_SGMII_SERDES
 
-/* I2C Configuration */
-#define CONFIG_SYS_DAVINCI_I2C_SPEED	100000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE	0x10 /* SMBus host address */
-#define CONFIG_SYS_DAVINCI_I2C_SPEED1	100000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE1	0x10 /* SMBus host address */
-#define CONFIG_SYS_DAVINCI_I2C_SPEED2	100000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE2	0x10 /* SMBus host address */
-
 /* EEPROM definitions */
 
 /* NAND Configuration */
diff --git a/scripts/config_whitelist.txt b/scripts/config_whitelist.txt
index 0a2b817..f4ae48d 100644
--- a/scripts/config_whitelist.txt
+++ b/scripts/config_whitelist.txt
@@ -495,7 +495,6 @@
 CONFIG_SYS_CACHE_ACR2
 CONFIG_SYS_CACHE_DCACR
 CONFIG_SYS_CACHE_ICACR
-CONFIG_SYS_CACHE_STASHING
 CONFIG_SYS_CCSRBAR
 CONFIG_SYS_CCSRBAR_PHYS
 CONFIG_SYS_CCSRBAR_PHYS_HIGH
@@ -515,7 +514,6 @@
 CONFIG_SYS_CPLD_FTIM2
 CONFIG_SYS_CPLD_FTIM3
 CONFIG_SYS_CPLD_SIZE
-CONFIG_SYS_CPUSPEED
 CONFIG_SYS_CPU_CLK
 CONFIG_SYS_CS0_BASE
 CONFIG_SYS_CS0_CTRL
@@ -524,7 +522,6 @@
 CONFIG_SYS_CS0_FTIM2
 CONFIG_SYS_CS0_FTIM3
 CONFIG_SYS_CS0_MASK
-CONFIG_SYS_CS0_SIZE
 CONFIG_SYS_CS1_BASE
 CONFIG_SYS_CS1_CTRL
 CONFIG_SYS_CS1_FTIM0
@@ -593,12 +590,6 @@
 CONFIG_SYS_DA850_PLL0_PLLM
 CONFIG_SYS_DA850_PLL1_PLLM
 CONFIG_SYS_DA850_SYSCFG_SUSPSRC
-CONFIG_SYS_DAVINCI_I2C_SLAVE
-CONFIG_SYS_DAVINCI_I2C_SLAVE1
-CONFIG_SYS_DAVINCI_I2C_SLAVE2
-CONFIG_SYS_DAVINCI_I2C_SPEED
-CONFIG_SYS_DAVINCI_I2C_SPEED1
-CONFIG_SYS_DAVINCI_I2C_SPEED2
 CONFIG_SYS_DCACHE_INV
 CONFIG_SYS_DCSRBAR
 CONFIG_SYS_DCSRBAR_PHYS
@@ -626,7 +617,6 @@
 CONFIG_SYS_DDR_CS1_BNDS
 CONFIG_SYS_DDR_CS1_CONFIG
 CONFIG_SYS_DDR_CS1_CONFIG_2
-CONFIG_SYS_DDR_DATA_INIT
 CONFIG_SYS_DDR_INIT_ADDR
 CONFIG_SYS_DDR_INIT_EXT_ADDR
 CONFIG_SYS_DDR_INTERVAL
